Ë
    7^(h.  ã                   ó   — d dl mZ d„ Zd„ Zy)é    ©Ú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                 óZ   •‡ — t        ‰ «      ˆˆ fd„«       }ˆfd„|_        ˆfd„|_        |S )Nc                 ó�   •— t        ‰«      }| |k  r‰|    S t        || dz   «      D ]  }‰j                   ‰|‰«      «       Œ ‰d   S )Né   éÿÿÿÿ©ÚlenÚrangeÚappend)ÚnÚLÚiÚcacheÚfs      €€úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/utilities/memoization.pyÚgz-recurrence_memo.<locals>.decorator.<locals>.g   sQ   ø€ ä�E“
ˆAØ�1ŠuØ˜Q‘x�Ü˜1˜a !™e“_ò *�Ø—‘™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   s.   ù€ Ü	ˆ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                 ó4   •‡ — t        ‰ «      ˆˆˆ fd„«       }|S )Nc                 ó  •— t        ‰	«      }| |k  r‰	|    |   S t        || dz   «      D ]M  } ‰|«      }|g}‰	j                  |«       t        d|dz   «      D ]  } ‰
||‰	«      }|j                  |«       Œ ŒO ‰	|    |   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Ø˜Q‘x ‘{Ð"ä˜1˜a !™e“_ò 
+�á “{�Ø!˜F�	Ø—‘˜YÔ'ô ˜q ! a¡%›ò +�AÙ˜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*   *   s   ù€ ð €Eõð, Ðr   N)Ú	functoolsr   r    r*   r   r   r   ú<module>r,      s   ðÝ ò#óL"r   