� !��g.���ddlmZd�Zd�ZdS)���wrapsc���|��fd�}|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�����fd���}�fd�|_�fd�|_|S)Nc���t���}||kr�|St||dz��D]!}���|������"�dS)N��������len�range�append)�n�L�i�cache�fs ���k/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/sympy/utilities/memoization.py�gz-recurrence_memo.<locals>.decorator.<locals>.gsd����E� � �A��1�u�u��Q�x���1�a�!�e�_�_� *� *��� � �Q�Q�q�%�[�[�)�)�)�)���9� �c�"��t���S�N)r )rs�r�<lambda>z4recurrence_memo.<locals>.decorator.<locals>.<lambda>$s ����U���rc����|Sr�)�xrs �rrz4recurrence_memo.<locals>.decorator.<locals>.<lambda>%s ����q��r)r� cache_length� fetch_item)rrrs` �r� decoratorz"recurrence_memo.<locals>.decoratorsY���� �q��� � � � � � �� �,�+�+�+���)�)�)�)�� ��rr)�initialrrs @r�recurrence_memor s+���* �E� � � � � � �rc����g���fd�}|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������fd���}|S)Nc�H��t� ��}||kr� ||St||dz��D]]}�|��}|g}� �|��td|dz��D]$}� ||� ��}|�|���%�^� ||S)Nrr ) r�mrr�F_i0� F_i_cache�j�F_ij�base_seqrrs ���rrz3assoc_recurrence_memo.<locals>.decorator.<locals>.g7s�����E� � �A��1�u�u��Q�x��{�"��1�a�!�e�_�_� +� +���x��{�{��!�F� �� � �Y�'�'�'��q�!�a�%���+�+�A��1�Q��5�>�>�D��$�$�T�*�*�*�*�+���8�A�;� rr)rrr)rs` ��rrz(assoc_recurrence_memo.<locals>.decorator6s>���� �q��� � � � � � � �� �&�rr)r)rrs` @r�assoc_recurrence_memor**s1���� �E�������, �rN)� functoolsrr r*rrr�<module>r,s@��������#�#�#�L"�"�"�"�"r
Memory