ó
    Š*£h##  ã                   óø   • S SK JrJrJrJrJrJrJrJrJ	r	J
r
JrJrJrJrJrJr  SSKJrJr  S SKJr  S SKJr  S SKrS SKJr  S rS	 rS
 r\" SS/5      S\S\4S j5       rS\S\4S jr \" SSSS9SS j5       r!g)é    )ÚfzeroÚfrom_intÚfrom_rationalÚfoneÚfhalfÚbitcountÚto_intÚmpf_mulÚmpf_divÚmpf_subÚmpf_addÚmpf_sqrtÚmpf_piÚmpf_cosh_sinhÚmpf_cosÚmpf_siné   )Ú_sqrt_mod_prime_powerÚis_quad_residue)Ú
deprecated)Úrecurrence_memoN©Úcountc                  óÎ  • Sn S/U -  q S/U -  q[        U S-  5      S-   n[        SU5       H?  n[         U   S:X  d  M  [        X"-  X5       H  n[         U   S:X  d  M  U[         U'   M     MA     [        SU 5       Hg  n[         U   S:X  a  U[         U'   US-
  [        U'   M'  [         U   nX$-  nXT-  S:X  a  [        U   U-  [        U'   MQ  [        U   US-
  -  [        U'   Mi     g )Né † r   r   ç      à?é   é   )Ú_factorÚ_totientÚintÚrange)ÚmaxnÚlimÚiÚjÚxÚys         ÚV/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/ntheory/partitions_.pyÚ_prer*      sç   € Ø€Dàˆc�$‰h€GØˆs�4‰x€HÜ
ˆd�C‰i‹.˜1Ñ
€CÜ�1�cŽ]ˆÜ�1‰:˜�?Ü˜1™3 Ö(�Ü˜1‘: •?Ø!"”G˜A“Jó )ñ ô
 �1�dŽ^ˆÜ�1‰:˜‹?ØŒG�A‰JØ˜A™#ŒH�Q‰KÙÜ�A‰JˆØ‰DˆØ‰5�A‹:Ü" 1™+ a™-ŒH�Q‹Kä" 1™+ q¨1¡uÑ-ŒH�Q‹Kò ó    c                 óÜ  • US:X  a  [         $ UnSn[        U   nX5-  S:X  a  X5-  nUS-  nX5-  S:X  a  M  X-  nSSU -  -
  n[        U5      nUS:X  Gaw  US:X  aª  SU-  n	X—U	-  -   nU[        SUS-
  U	5      -  U	-  n[	        USUS-   5      S   n
[        [        [        SU
-  5      X‚5      [        U	5      U5      n[        [        [        S	U-  SU
S-  -
  -  5      [        [        U5      U5      U5      [        X²5      U5      $ US:X  a¿  SU-  n	X—U	-  -   nUS:”  a  U[        S
US-  S-
  U	5      -  U	-  n[	        USUS-   5      S   n
[        [        [        SU
-  5      X‚5      [        U	5      U5      n[        [        [        SS	US-   -  -  SSU
S-  -  -
  -  5      [        [        US-  5      U5      U5      [        X²5      U5      $ XU-  -   nUS-  S;   a  S	OSnXu-  S:X  a5  US:X  a)  [        [        U5      [        [        U5      U5      U5      $ [        $ [        Xu5      (       d  [        $ XTS-
  -  US-
  -  nU[        SUS-
  U5      -  n[	        XuU5      S   n
[        [        [        SU
-  5      X‚5      [        U5      U5      n[        [        [        SU-  5      [        [        U5      U5      U5      [        X²5      U5      $ US:w  d  US:¼  aÁ  [        R                  " US5      [        R                  " US5      pþSXï-  -  nXô-  U -  US-  S-
  U-  -   [        XF-  U-  U-  [        U   S-
  U5      -  U-  nXä-  U -  US-  S-
  U-  -   [        XC-  U-  U-  [        U   S-
  U5      -  U-  n[        [!        UX25      [!        UXb5      U5      $ US:X  aw  SU -  S-   [        S[        U   S-
  U5      -  U-  nSU S-
  US-  S-
  S-  -
  US-  -  S-  -   S-  n[        [        [        S	5      [!        UX25      U5      [!        UXb5      5      $ SU -  S-   [        S[        U   S-
  U5      -  U-  nSXS-  S-
  S-  -
  S-  -   S-  n[        [!        UX25      [!        UXb5      U5      $ )z{Compute the inner sum in HRR formula [1]_

References
==========

.. [1] https://msp.org/pjm/1956/6-1/pjm-v6-n1-p18-p.pdf

r   r   é   r   é   é	   é   é   éÿÿÿÿé@   é   )r   é   i@  r   é€   é    )r   r   r   Úpowr   r   r
   r   r   r   r   r   r   ÚmathÚgcdr    Ú_a)ÚnÚkÚprecÚk1ÚeÚpÚk2ÚvÚpiÚmodÚmÚargÚjacobi3Ú_phiÚd1Úd2Ún1Ún2s                     r)   r;   r;   "   sñ  € ð 	ˆAƒvÜˆà	
€BØ	€AÜ�‰
€AØ
‰&�A‹+Ø
‰ˆØ	ˆQ‰ˆð ‰&�A�+ð 
‰€BØ	ˆBˆq‰D‰€AÜ	�‹€Bà	ˆQ„wà�‹6Ø�A‘#ˆCØ˜#‘g‘ˆAØ”3�q˜!˜a™% Ó%Ñ%¨Ñ,ˆAÜ% a¨¨A°©EÓ2°1Ñ5ˆAÜœ'Ü˜˜1™“˜ró)Ü*2°3«-¸ó?ˆCäœ7Ü˜"˜q™ ! q¨1¡u¡+Ñ.Ó/Üœ !› dÓ+¨Tó3ô ˜Ó" Dó*ð *ð �‹6Ø�A‘#ˆCØ˜#‘g‘ˆAØ�1‹uØ”s˜2˜q !™t a™x¨Ó-Ñ-°Ñ4�Ü% a¨¨A°©EÓ2°1Ñ5ˆAÜœ'¤(¨1¨Q©3£-°Ó:Ü˜“˜tó%ˆCäœ7Ü˜˜B ! a¡%™=™¨!¨a°°Q±©i©-Ñ8Ó9Üœ ! Q¡$›¨Ó.°ó6ô ˜Ó" Dó*ð *ð �A‘‰IˆØ˜B™ &Ó(‘"¨aˆØ‰5�A‹:Ø�A‹vÜÜ˜WÓ%ÜœX a›[¨$Ó/°ó7ð 7ô ˆLÜ˜q×$Ñ$ÜˆLØ�q‘5‰z˜1˜q™5Ñ!ˆØŒs�3˜˜q™ !Ó$Ñ$ˆÜ! !¨Ó*¨1Ñ-ˆÜÜ”H˜Q˜q™S“M 2Ó,Ü�Q‹K˜óˆô ”wÜ�Q�w‘YÓÜ”X˜a“[ $Ó'¨ó/ô �CÓ ó&ð 	&ð
 	ˆAƒv��a“Ü—’˜"˜bÓ!¤4§8¢8¨B°Ó#3ˆBØ�‘‰KˆØ‰t�A‰v˜˜Q™ ™ R™Ñ'Ü�‘�R‘˜‘
œH R™L¨1Ñ,¨bÓ1ñ2Ø57ñ8ˆà‰t�A‰v˜˜Q™ ™ R™Ñ'Ü�‘�R‘˜‘
œH R™L¨1Ñ,¨bÓ1ñ2Ø57ñ8ˆä”r˜"˜bÓ'¬¨B°Ó)9¸4Ó@Ð@ØˆAƒvØ�‰s�Q‰wœ˜C¤¨"¡°Ñ!1°2Ó6Ñ6¸"Ñ<ˆØ�A˜‘E˜R ™U Q™Y¨™NÑ*¨R°©UÑ3°qÑ8Ñ8¸AÑ=ˆÜ”wÜ�R‹LÜˆr�2Ó˜dó$ô ˆr�2Óóð 	ð ˆQ‰3�‰7”C˜œH R™L¨1Ñ,¨bÓ1Ñ
1°RÑ	7€BØ
ˆq˜‘E˜A‘I ‘>Ñ! QÑ&Ñ
&¨!Ñ	+€BÜ”2�b˜"Ó#¤R¨¨BÓ%5°tÓ<Ð<r+   c           	      ót  • [        U5      n[        U5      n[        X1U5      n[        [        U 5      [	        SSU5      U5      n[        Xr5      n[        [        Xh5      U5      u  pš[        [        X5      [        [        XG5      U5      U5      n[        [        Xi5      [        X¨U5      U5      n[        X¼5      $ )zx
Compute the sinh term in the outer sum of the HRR formula.
The constants sqrt(2/3*pi) and sqrt(8) must be precomputed.
r   r-   )r   r   r   r   r   r   r   r
   )r<   r&   r>   Úsq23piÚsqrt8rD   ÚaÚbÚcÚchÚshÚDÚEs                r)   Ú_drX   y   s¡   € ô
 	�‹€AÜ	�‹€BÜ�˜4Ó €AÜ”˜“œ]¨1¨b°$Ó7¸Ó>€AÜ�Ó€AÜœ7 1›=¨$Ó/�F€BÜÜ�ÓÜ”˜Ó! 2Ó&¨ó	.€Aô 	”˜“¤¨¨tÓ 4°dÓ;€AÜ�1‹=Ðr+   r<   Úreturnc                 ó²   • SnSn[        5        HD  nUSU-  S-   -  nX-
  nUS:  a    U$ X   nXTS-   -  nSU::  a  XaU   -  nX$S-  (       a  U* OU-  nMF     U$ )z_Calculate the partition function P(n)

Parameters
==========

n : int
    nonnegative integer

r   r0   r   r   r   )r<   ÚprevrC   Úpentar%   ÚnpÚss          r)   Ú_partition_recr_   ‹   sƒ   € ð 	
€AØ€EÜŽWˆØ��1‘�q‘ÑˆØ‰YˆØ�‹6Øð €Hð ‰HˆØ
�!‰e‰ˆà�‹7Ø�b‘‰MˆAØ	�q—5ˆa‰R˜aÑŠñ ð €Hr+   c           	      óÖ  ^^^• U S:  a  gU S::  a  U [         R                  5       -
  S:  d  [         R                  5       S:X  a  U S:  a  [        U 5      $ S[        5       ;  a
  [        5         [	        [
        R                  SU -  S-  S-  -  [
        R                  " S	U -  5      -
  [
        R                  " S
5      -  S-   5      [
        R                  " S
5      -  n[	        US-  S-   5      =p#S[
        R                  S-  -  S[
        R                  " S5      -  -  m[
        R                  [
        R                  " S5      -  S-  m[
        R                  [
        R                  " S5      -  mUUU4S jn[        S[
        R                  " U S-  5      5      nU" X5      S:  d   eUS:”  a%  U" X5      S:  a  US-  nUS:”  a  U" X5      S:  a  M  UnUS-  nXV-
  S:”  a*  XV-   S-  nU" X5      =nS:  a  UnOUS:¼  a  UnXV-
  S:”  a  M*  Un	U	S:”  a  [        S5      e[        n
[        [        [!        SSU5      U5      [#        U5      U5      n[        [%        S5      U5      n['        SU	5       HR  n[)        XU5      n[+        XX;U5      n[-        U
[        Xï5      U5      n
[/        [1        [3        U5      5      5      S-   nMT     [	        [3        [-        U
[4        U5      5      5      $ )zGCalculate the partition function P(n)

Parameters
==========

n : int

r   i@ éF   r   i@8  r   g      @r   r1   é
   r   gš™™™™™ñ?éd   é,   éá   r0   éK   gUUUUUUå?c                 ó¢   >• [         R                  nTU" U5      -  TU" XS-
  -  5      -  [         R                  " TU" U 5      -  U-  5      -  -   $ )Nr   )r9   ÚsqrtÚsinh)r<   ÚNrh   Úc1Úc2Úc3s      €€€r)   Ú_MÚ_partition.<locals>._MÏ   sH   ø€ Ü�y‰yˆØ‘$�q“'‰z˜B™t A¨1¡u¡I›Ñ.¬t¯yªy¸¹DÀ»G¹ÀA¹Ó/FÑFÑFÐFr+   r/   é(   r   zInput too bigr.   é2   )r_   Úcache_lengthÚglobalsr*   r!   r9   rD   ÚlogÚlog2rh   ÚmaxÚceilÚ
ValueErrorr   r
   r   r   r   r   r"   r;   rX   r   r   Úabsr	   r   )r<   Úpbitsr>   rA   rn   ÚbigÚsmallrj   ÚerÚMr^   rO   rP   ÚqrQ   Údrk   rl   rm   s                   @@@r)   Ú
_partitionr�   ¦   sŸ  ú€ ð 	ˆ1ƒuØØ	ˆW‹˜œ^×8Ñ8Ó:Ñ:¸RÓ?Ü×'Ñ'Ó)¨QÓ.°1°v³:ô ˜aÓ Ð Øœ›	Ó!ÜŒäÜ�‰��1‘�R‘˜#‘ÑÜ�Š��1‘‹ñ	Ü—x’x “|ñ$à&'ñ(ó )ô 	�	Š	�"‹ñ€Eô �5˜‘9˜s‘?Ó#Ð#€Dð
 
ŒD�G‰G�Q‰J‰˜œDŸIšI a›LÑ(Ñ	)€BÜ	�‰”—’˜1“Ñ	˜bÑ	 €BÜ	�‰”—’˜3“Ñ	€B÷Gô ˆa”—’˜1˜c™6Ó"Ó
#€CÙˆa‹:˜ÓÐÐØ
�‹(‘r˜!“z CÓ'Ø�‰	ˆð �‹(‘r˜!“z CÕ'à€EØ
�‰'€CØ
‰+˜‹/Ø‰[˜1ÑˆÙ�Q“(ˆNˆB˜cÓ!Ø‰CØ�3‹YØˆEð ‰+˜�/ð 	€Að 	ˆ5ƒyÜ˜Ó)Ð)ô 	€AÜ”Xœm¨A¨q°!Ó4°aÓ8¼&À»)ÀQÓG€FÜ”X˜a“[ !Ó$€EÜ�1�aŽ[ˆÜˆq�Q‹KˆÜˆq�Q Ó&ˆÜ�A”w˜q“} dÓ+ˆô ”Sœ ›“^Ó$ rÑ)Šñ ô Œv”g˜a¤¨Ó-Ó.Ó/Ð/r+   zpThe `sympy.ntheory.partitions_.npartitions` has been moved to `sympy.functions.combinatorial.numbers.partition`.z1.13z%deprecated-ntheory-symbolic-functions)Údeprecated_since_versionÚactive_deprecations_targetc                 ó   • SSK Jn  U" U 5      $ )aÆ  
Calculate the partition function P(n), i.e. the number of ways that
n can be written as a sum of positive integers.

.. deprecated:: 1.13

    The ``npartitions`` function is deprecated. Use :class:`sympy.functions.combinatorial.numbers.partition`
    instead. See its documentation for more information. See
    :ref:`deprecated-ntheory-symbolic-functions` for details.

P(n) is computed using the Hardy-Ramanujan-Rademacher formula [1]_.


The correctness of this implementation has been tested through $10^{10}$.

Examples
========

>>> from sympy.functions.combinatorial.numbers import partition
>>> partition(25)
1958

References
==========

.. [1] https://mathworld.wolfram.com/PartitionFunctionP.html

r   )Ú	partition)Ú%sympy.functions.combinatorial.numbersr…   )r<   ÚverboseÚfunc_partitions      r)   Únpartitionsr‰   ó   s   € õB RÙ˜!ÓÐr+   )F)"Úmpmath.libmpr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Úresidue_ntheoryr   r   Úsympy.utilities.decoratorr   Úsympy.utilities.memoizationr   r9   Ú	itertoolsr   r*   r;   rX   r!   r_   r�   r‰   © r+   r)   Ú<module>r�      s¯   ð÷@÷ @÷ @÷ @ó @÷ DÝ 0Ý 7ã Ý ò.ò.U=ònñ$ �!�Q�Óð�cð  Có ó ðð4J0�#ð J0˜#ô J0ñZ ð tàØBñDóó	Dñr+   