
    \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         Q/var/www/auris/envauris/lib/python3.13/site-packages/sympy/ntheory/partitions_.py_prer*      s    Dc$hGs4xH
dCi.1
C1c]1:?13(1:?!"GAJ ) 
 1d^1:?GAJA#HQKAJD5A:"1+a-HQK"1+q1u-HQK     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	XU	-  -   nU[        SUS-
  U	5      -  U	-  n[	        USUS-   5      S   n
[        [        [        SU
-  5      X5      [        U	5      U5      n[        [        [        S	U-  SU
S-  -
  -  5      [        [        U5      U5      U5      [        X5      U5      $ US:X  a  SU-  n	XU	-  -   nUS:  a  U[        S
US-  S-
  U	5      -  U	-  n[	        USUS-   5      S   n
[        [        [        SU
-  5      X5      [        U	5      U5      n[        [        [        SS	US-   -  -  SSU
S-  -  -
  -  5      [        [        US-  5      U5      U5      [        X5      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      X5      [        U5      U5      n[        [        [        SU-  5      [        [        U5      U5      U5      [        X5      U5      $ US:w  d  US:  a  [        R                  " US5      [        R                  " US5      pS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    	Av	
B	A
A
&A+
	Q &A+ 
B	BqDA	B	Qw6A#C#gA3q!a%%%,A%aAE215A'1r)*23-?C7"q!q1u+./!d+T3 "D* * 6A#C#gA1us2q!tax--4%aAE215A'(1Q3-:t%C7B!a%=!aQi-89!Q$.6 "D* * AIB&("a5A:AvW%Xa[$/7 7 Lq$$Lq5z1q5!s3q!$$!!*1-HQqSM2,QK wQwYXa[$'/ C& 	&
 	Ava"b!488B#3BKtAvQR'R
HRL1,b12578tAvQR'R
HRL1,b12578r"b'B)94@@AvsQwC"!1266"<AERUQYN*RU3q88A=wRLr2d$ r2 	 Q37CHRL1,b1
1R	7B
qEAI>!Q&
&!	+B2b"#RB%5t<<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      [        XU5      U5      n[        X5      $ )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]1b$7>AA71=$/FB!2&	.A 	t 4d;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MA	q5aRa  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
[        X5      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    yy$q'zBtA1uI.tyy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    	1u	W^88::R?'')Q.1v: a  	!1R#1	xx|$&'( ) 			"E 59s?##D
 
DGGQJDIIaL(	)B	1	b	 B	3	BG a1c6"
#Ca:
(r!zC'	 (r!zC'E
'C
+/[1Q(NBc!C3YE +/ 	A 	5y)) 	AXmAq!4a8&)QGFXa[!$E1a[qQKqQ&Awq}d+ S^$r)  vga-.//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0Z  tBD	Dr+   