+
    ‹°³j.  ã                   ó   € ^ RI Ht R tR tR# )é    ©Úwrapsc                ó   a€ V oV3R lpV# )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                 ó`   <a € \        S 4      VV 3R  l4       pV3R lVn        V3R lVn        V# )c                 ó¬   <€ \        S4      pW8  d
   SV ,          # \        W^,           4       F  pSP                  S! VS4      4       K  	  SR,          # )é   éÿÿÿÿ©ÚlenÚrangeÚappend)ÚnÚLÚiÚcacheÚfs   &  €€Ú\/home/luca/screen-checking/.venv/lib/python3.14/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                  ó   <€ \        S 4      # ©N)r   )r   s   €r   Ú<lambda>Ú4recurrence_memo.<locals>.decorator.<locals>.<lambda>$   s	   ø€ ¤ U¤r   c                 ó   <€ SV ,          # r   © )Úxr   s   &€r   r   r   %   s	   ø€   q¦r   )r   Úcache_lengthÚ
fetch_item)r   r   r   s   f €r   Ú	decoratorÚ"recurrence_memo.<locals>.decorator   s.   ù€ Ü	ˆq‹õ	ó 
ð	ô ,ˆŒÜ)ˆŒØˆr   r   )Úinitialr    r   s   & @r   Úrecurrence_memor#      s   ø€ ð* €Eõð Ðr   c                ó   a a€ . oV V3R lpV# )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   <a € \        S 4      VVV 3R  l4       pV# )c                 ó8  <€ \        S	4      pW8  d   S	V ,          V,          # \        W ^,           4       FS  pS! V4      pV.pS	P                  V4       \        ^V^,           4       F  pS
! W6S	4      pVP                  V4       K  	  KU  	  S	V ,          V,          # )r   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   f €€r   r    Ú(assoc_recurrence_memo.<locals>.decorator6   s    ù€ Ü	ˆq‹ö	ó 
ð	ð& ˆr   r   )r,   r    r   s   f @r   Úassoc_recurrence_memor/   *   s   ù€ ð €Eöð, Ðr   N)Ú	functoolsr   r#   r/   r   r   r   Ú<module>r1      s   ðÝ ò#ôL"r   