§
    PŠtj.  ã                   ó   — d dl mZ d„ Zd„ ZdS )é    ©Úwrapsc                 ó   ‡— | Šˆfd„}|S )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                 óh   •‡ — t          ‰ ¦  «        ˆˆ fd„¦   «         }ˆfd„|_        ˆfd„|_        |S )Nc                 ó¸   •— t          ‰¦  «        }| |k     r‰|          S t          || dz   ¦  «        D ]!}‰                      ‰|‰¦  «        ¦  «         Œ"‰d         S )Né   éÿÿÿÿ©ÚlenÚrangeÚappend)ÚnÚLÚiÚcacheÚfs      €€úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/utilities/memoization.pyÚgz-recurrence_memo.<locals>.decorator.<locals>.g   sd   ø€ å�E‘
”
ˆAØ�1ŠuˆuØ˜Q”x�Ý˜1˜a !™e‘_”_ð *ð *�Ø—’˜Q˜Q˜q %™[œ[Ñ)Ô)Ð)Ð)Ø˜”9Ðó    c                  ó"   •— t          ‰ ¦  «        S ©N)r   )r   s   €r   ú<lambda>z4recurrence_memo.<locals>.decorator.<locals>.<lambda>$   s   ø€ ¥ U¡¤€ r   c                 ó   •— ‰|          S r   © )Úxr   s    €r   r   z4recurrence_memo.<locals>.decorator.<locals>.<lambda>%   s   ø€   q¤€ r   )r   Úcache_lengthÚ
fetch_item)r   r   r   s   ` €r   Ú	decoratorz"recurrence_memo.<locals>.decorator   sY   øø€ Ý	ˆq‰Œð	ð 	ð 	ð 	ð 	ñ 
Œð	ð ,Ð+Ð+Ð+ˆŒØ)Ð)Ð)Ð)ˆŒØˆr   r   )Úinitialr   r   s     @r   Úrecurrence_memor       s+   ø€ ð* €Eðð ð ð ð ð Ðr   c                 ó   ‡ ‡— g Šˆ ˆfd„}|S )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                 óB   •‡ — t          ‰ ¦  «        ˆˆˆ fd„¦   «         }|S )Nc                 óH  •— t          ‰	¦  «        }| |k     r‰	|          |         S t          || dz   ¦  «        D ]]} ‰|¦  «        }|g}‰	                     |¦  «         t          d|dz   ¦  «        D ]$} ‰
||‰	¦  «        }|                     |¦  «         Œ%Œ^‰	|          |         S )Nr   r
   )r   Úmr   r   ÚF_i0Ú	F_i_cacheÚjÚF_ijÚbase_seqr   r   s           €€€r   r   z3assoc_recurrence_memo.<locals>.decorator.<locals>.g7   sÀ   ø€ å�E‘
”
ˆAØ�1ŠuˆuØ˜Q”x ”{Ð"å˜1˜a !™e‘_”_ð 
+ð 
+�à�x ‘{”{�Ø!˜F�	Ø—’˜YÑ'Ô'Ð'õ ˜q ! a¡%™œð +ð +�AØ˜1˜Q  5™>œ>�DØ×$Ò$ TÑ*Ô*Ð*Ð*ð+ð ˜”8˜A”;Ðr   r   )r   r   r)   r   s   ` €€r   r   z(assoc_recurrence_memo.<locals>.decorator6   s>   øø€ Ý	ˆq‰Œð	ð 	ð 	ð 	ð 	ð 	ñ 
Œð	ð& ˆr   r   )r)   r   r   s   ` @r   Úassoc_recurrence_memor*   *   s1   øø€ ð €Eðð ð ð ð ð ð, Ðr   N)Ú	functoolsr   r    r*   r   r   r   ú<module>r,      s@   ðØ Ð Ð Ð Ð Ð ð#ð #ð #ðL"ð "ð "ð "ð "r   