ó
    ‹*£h.  ã                   ó   • S SK Jr  S rS rg)é    ©Úwrapsc                 ó   ^• U mU4S jnU$ )a…  
Memo decorator for sequences defined by recurrence

Examples
========

>>> from sympy.utilities.memoization import recurrence_memo
>>> @recurrence_memo([1]) # 0! = 1
... def factorial(n, prev):
...     return n * prev[-1]
>>> factorial(4)
24
>>> factorial(3) # use cache values
6
>>> factorial.cache_length() # cache length can be obtained
5
>>> factorial.fetch_item(slice(2, 4))
[2, 6]

c                 ó`   >^ • [        T 5      UU 4S j5       nU4S jUl        U4S jUl        U$ )Nc                 ó’   >• [        T5      nX:  a  TU    $ [        XS-   5       H  nTR                  T" UT5      5        M     TS   $ )Né   éÿÿÿÿ©ÚlenÚrangeÚappend)ÚnÚLÚiÚcacheÚfs      €€ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/utilities/memoization.pyÚgÚ-recurrence_memo.<locals>.decorator.<locals>.g   sH   ø€ ä�E“
ˆAØ‹uØ˜Q‘x�Ü˜1 !™e–_�Ø—‘™Q˜q %›[Ö)ñ %à˜‘9Ðó    c                  ó   >• [        T 5      $ ©N)r   )r   s   €r   Ú<lambda>Ú4recurrence_memo.<locals>.decorator.<locals>.<lambda>$   s	   ø€ ¤ U¤r   c                 ó   >• TU    $ r   © )Úxr   s    €r   r   r   %   s	   ø€   q¢r   )r   Úcache_lengthÚ
fetch_item)r   r   r   s   ` €r   Ú	decoratorÚ"recurrence_memo.<locals>.decorator   s.   ù€ Ü	ˆq‹õ	ó 
ð	ô ,ˆŒÜ)ˆŒØˆr   r   )Úinitialr    r   s     @r   Úrecurrence_memor#      s   ø€ ð* €Eõð Ðr   c                 ó   ^ ^• / mU U4S jnU$ )zÕ
Memo decorator for associated sequences defined by recurrence starting from base

base_seq(n) -- callable to get base sequence elements

XXX works only for Pn0 = base_seq(0) cases
XXX works only for m <= n cases
c                 ó6   >^ • [        T 5      UUU 4S j5       nU$ )Nc                 ó  >• [        T	5      nX:  a  T	U    U   $ [        X S-   5       HO  nT" U5      nU/nT	R                  U5        [        SUS-   5       H  nT
" X6T	5      nUR                  U5        M     MQ     T	U    U   $ )Nr   r
   )r   Úmr   r   ÚF_i0Ú	F_i_cacheÚjÚF_ijÚbase_seqr   r   s           €€€r   r   Ú3assoc_recurrence_memo.<locals>.decorator.<locals>.g7   sŒ   ø€ ä�E“
ˆAØ‹uØ˜Q‘x ‘{Ð"ä˜1 !™e–_�á “{�Ø!˜F�	Ø—‘˜YÔ'ô ˜q ! a¡%ž�AÙ˜Q 5›>�DØ×$Ñ$ TÖ*ó )ñ %ð ˜‘8˜A‘;Ðr   r   )r   r   r,   r   s   ` €€r   r    Ú(assoc_recurrence_memo.<locals>.decorator6   s    ù€ Ü	ˆq‹ö	ó 
ð	ð& ˆr   r   )r,   r    r   s   ` @r   Úassoc_recurrence_memor/   *   s   ù€ ð €Eöð, Ðr   N)Ú	functoolsr   r#   r/   r   r   r   Ú<module>r1      s   ðÝ ò#óL"r   