Ë
    7^(h##  ã                   óø   — d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZ ddlmZmZ d dlmZ d dlmZ d dlZd dlmZ d„ Zd	„ Zd
„ Z eddg«      dedefd„«       Zdedefd„Z  eddd¬«      dd„«       Z!y)é    )Ú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                  óº  — d} dg| z  a dg| z  at        | dz  «      dz   }t        d|«      D ]:  }t         |   dk(  sŒt        ||z  | |«      D ]  }t         |   dk(  sŒ|t         |<   Œ Œ< t        d| «      D ]d  }t         |   dk(  r|t         |<   |dz
  t        |<   Œ%t         |   }||z  }||z  dk(  rt        |   |z  t        |<   ŒOt        |   |dz
  z  t        |<   Œf y )Né † r   r   ç      à?é   é   )Ú_factorÚ_totientÚintÚrange)ÚmaxnÚlimÚiÚjÚxÚys         úW/var/www/skyplay_api_hub/venv/lib/python3.12/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˜Q™3  aÓ(ò #�Ü˜1‘: “?Ø!"”G˜A’Jñ#ð#ô
 �1�d‹^ò 
.ˆÜ�1‰:˜Š?ØŒG�A‰JØ˜A™#ŒH�Q‰KØÜ�A‰JˆØˆq‰DˆØˆq‰5�AŠ:Ü" 1™+ a™-ŒH�QŠKä" 1™+ q¨1¡uÑ-ŒH�QŠKñ
.ó    c                 óì  — |dk(  rt         S |}d}t        |   }||z  dk(  r||z  }|dz  }||z  dk(  rŒ||z  }dd| z  z
  }t        |«      }|dk(  �rx|dk(  r­d|z  }	|	||	z  z   }|t        d|dz
  |	«      z  |	z  }t	        |d|dz   «      d   }
t        t        t        d|
z  «      ||«      t        |	«      |«      }t        t        t        d	|z  d|
dz  z
  z  «      t        t        |«      |«      |«      t        ||«      |«      S |dk(  rÁd|z  }	|	||	z  z   }|dkD  r|t        d
|dz  dz
  |	«      z  |	z  }t	        |d|dz   «      d   }
t        t        t        d|
z  «      ||«      t        |	«      |«      }t        t        t        dd	|dz   z  z  dd|
dz  z  z
  z  «      t        t        |dz  «      |«      |«      t        ||«      |«      S |||z  z   }|dz  dv rd	nd}||z  dk(  r4|dk(  r)t        t        |«      t        t        |«      |«      |«      S t        S t        ||«      st        S ||dz
  z  |dz
  z  }|t        d|dz
  |«      z  }t	        |||«      d   }
t        t        t        d|
z  «      ||«      t        |«      |«      }t        t        t        d|z  «      t        t        |«      |«      |«      t        ||«      |«      S |dk7  s|dk\  rÇt        j                  |d«      t        j                  |d«      }}d||z  z  }||z  | z  |dz  dz
  |z  z   t        ||z  |z  |z  t        |   dz
  |«      z  |z  }||z  | z  |dz  dz
  |z  z   t        ||z  |z  |z  t        |   dz
  |«      z  |z  }t        t!        |||«      t!        |||«      |«      S |dk(  ryd| z  dz   t        dt        |   dz
  |«      z  |z  }d| dz
  |dz  dz
  dz  z
  |dz  z  dz  z   dz  }t        t        t        d	«      t!        |||«      |«      t!        |||«      «      S d| z  dz   t        dt        |   dz
  |«      z  |z  }d| |dz  dz
  dz  z
  dz  z   dz  }t        t!        |||«      t!        |||«      |«      S )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Ø
ˆq‰&�AŠ+Ø
ˆq‰ˆØ	ˆQ‰ˆð ˆq‰&�A‹+ð 
ˆB‰€BØ	ˆBˆq‰D‰€AÜ	�‹€Bà	ˆQƒwà�Š6Ø�A‘#ˆCØ�a˜#‘g‘ˆAØ”3�q˜!˜a™% Ó%Ñ%¨Ñ,ˆAÜ% a¨¨A°©EÓ2°1Ñ5ˆAÜœ'Ü˜˜1™“˜r 4ó)Ü*2°3«-¸ó?ˆCäœ7Ü˜"˜q™ ! q¨1¡u¡+Ñ.Ó/Üœ !› dÓ+¨Tó3ô ˜˜TÓ" Dó*ð *ð �Š6Ø�A‘#ˆCØ�a˜#‘g‘ˆAØ�1ŠuØ”s˜2˜q !™t a™x¨Ó-Ñ-°Ñ4�Ü% a¨¨A°©EÓ2°1Ñ5ˆAÜœ'¤(¨1¨Q©3£-°°TÓ:Ü˜“˜tó%ˆCäœ7Ü˜˜B ! a¡%™=™¨!¨a°°Q±©i©-Ñ8Ó9Üœ ! Q¡$›¨Ó.°ó6ô ˜˜TÓ" Dó*ð *ð ��A‘‰IˆØ˜B™ &Ñ(‘"¨aˆØˆq‰5�AŠ:Ø�AŠvÜÜ˜WÓ%ÜœX a›[¨$Ó/°ó7ð 7ô ˆLÜ˜q !Ô$ÜˆLØ�1�q‘5‰z˜1˜q™5Ñ!ˆØŒs�3˜˜q™ !Ó$Ñ$ˆÜ! ! Q¨Ó*¨1Ñ-ˆÜÜ”H˜Q˜q™S“M 2 tÓ,Ü�Q‹K˜óˆô ”wÜ�Q�w‘YÓÜ”X˜a“[ $Ó'¨ó/ô �C˜Ó ó&ð 	&ð
 	ˆA‚v��a’Ü—‘˜"˜bÓ!¤4§8¡8¨B°Ó#3ˆBˆØ��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°°DÓ)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�tÓ˜dó$ô ˆr�2�tÓóð 	ð ˆQ‰3�‰7”C˜œH R™L¨1Ñ,¨bÓ1Ñ
1°RÑ	7€BØ
ˆq�B˜‘E˜A‘I ‘>Ñ! QÑ&Ñ
&¨!Ñ	+€BÜ”2�b˜"˜dÓ#¤R¨¨B°Ó%5°tÓ<Ð<r+   c           	      ó†  — t        |«      }t        |«      }t        |||«      }t        t        | «      t	        dd|«      |«      }t        ||«      }t        t        ||«      |«      \  }	}
t        t        ||«      t        t        ||«      |«      |«      }t        t        ||	«      t        |
||«      |«      }t        ||«      S )z„
    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Ü��DÓ€AÜœ7 1 a›=¨$Ó/�F€BˆÜÜ��DÓÜ”˜˜qÓ! 2Ó&¨ó	.€Aô 	”˜˜2“¤¨¨A¨tÓ 4°dÓ;€AÜ�1�a‹=Ðr+   r<   Úreturnc                 óª   — d}d}t        «       D ]A  }|d|z  dz   z  }| |z
  }|dk  r |S ||   }||dz   z  }d|k  r|||   z  }||dz  r| n|z  }ŒC |S )zt 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ˆØ
ˆa�!‰e‰ˆà�Š7Ø��b‘‰MˆAØ	�1�q’5ˆa‰R˜aÑ‰ð
 ð €Hr+   c           	      ó´  ‡‡‡— | dk  ry| dk  r| t         j                  «       z
  dk  st         j                  «       dk(  r| dk  rt        | «      S dt        «       vr
t        «        t	        t
        j                  d| z  dz  dz  z  t        j                  d	| z  «      z
  t        j                  d
«      z  dz   «      t        j                  d
«      z  }t	        |dz  dz   «      x}}dt
        j                  dz  z  dt        j                  d«      z  z  Št
        j                  t        j                  d«      z  dz  Št
        j                  t        j                  d«      z  Šˆˆˆfd„}t        dt        j                  | dz  «      «      } || |«      dk  sJ ‚|dkD  r# || |«      dk  r|dz  }|dkD  r || |«      dk  rŒ|}|dz  }||z
  dkD  r)||z   dz  } || |«      x}dk  r|}n|dk\  r|}||z
  dkD  rŒ)|}	|	dkD  rt        d«      ‚t        }
t        t        t!        dd|«      |«      t#        |«      |«      }t        t%        d«      |«      }t'        d|	«      D ]U  }t)        | ||«      }t+        | ||||«      }t-        |
t        ||«      |«      }
t/        t1        t3        |«      «      «      dz   }ŒW t	        t3        t-        |
t4        |«      «      «      S )zX Calculate 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                 ó¢   •— t         j                  }‰ ||«      z  ‰ ||| dz
  z  «      z  t        j                  ‰ || «      z  |z  «      z  z   S )Nr   )r9   ÚsqrtÚsinh)r<   ÚNrh   Úc1Úc2Úc3s      €€€r)   Ú_Mz_partition.<locals>._MÏ   sJ   ø€ Ü�y‰yˆØ‘$�q“'‰z˜B™t A q¨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ˆ1ð
 
ŒD�G‰G�Q‰J‰˜œDŸI™I a›LÑ(Ñ	)€BÜ	�‰”—‘˜1“Ñ	˜bÑ	 €BÜ	�‰”—‘˜3“Ñ	€BöGô ˆa”—‘˜1˜c™6Ó"Ó
#€CÙˆa�‹:˜ÒÐÐØ
�Š(‘r˜!˜S“z CÒ'Ø�‰	ˆð �Š(‘r˜!˜S“z CÓ'à€EØ
�‰'€CØ
�‰+˜Š/Ø�5‰[˜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                 ó   — ddl m}  || «      S )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+   