§
    OŠtj##  ã                   ó  — 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!dS )é    )Ú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 ]E}t           |         dk    r2t          ||z  | |¦  «        D ]}t           |         dk    r
|t           |<   ŒŒFt          d| ¦  «        D ]z}t           |         dk    r|t           |<   |dz
  t          |<   Œ+t           |         }||z  }||z  dk    rt          |         |z  t          |<   Œ_t          |         |dz
  z  t          |<   Œ{d S )Né † r   r   ç      à?é   é   )Ú_factorÚ_totientÚintÚrange)ÚmaxnÚlimÚiÚjÚxÚys         úW/var/www/html/CA-Chatbot/venv/lib/python3.11/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ˆKå" 1œ+ q¨1¡uÑ-�H�Q‰KˆKð
.ð 
.ó    c                 ó  — |dk    rt           S |}d}t          |         }||z  dk    r||z  }|dz  }||z  dk    °||z  }dd| z  z
  }t          |¦  «        }|dk    �r,|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k    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    rF|dk    r9t          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k    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    r•d| 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€vÝˆà	
€BØ	€AÝ�Œ
€AØ
ˆq‰&�AŠ+ˆ+Ø
ˆq‰ˆØ	ˆQ‰ˆð ˆq‰&�AŠ+ˆ+ð 
ˆB‰€BØ	ˆBˆq‰D‰€AÝ	�‰Œ€Bà	ˆQ‚w�wà�Š6ˆ6Ø�A‘#ˆCØ�a˜#‘g‘ˆAØ•3�q˜!˜a™% Ñ%Ô%Ñ%¨Ñ,ˆAÝ% a¨¨A°©EÑ2Ô2°1Ô5ˆAÝ�'Ý˜˜1™‘”˜r 4ñ)ô )Ý*2°3©-¬-¸ñ?ô ?ˆCå�7Ý˜"˜q™ ! q¨1¡u¡+Ñ.Ñ/Ô/Ý� !™œ dÑ+Ô+¨Tñ3ô 3õ ˜˜TÑ"Ô" Dñ*ô *ð *ð �Š6ˆ6Ø�A‘#ˆCØ�a˜#‘g‘ˆAØ�1ŠuˆuØ•s˜2˜q !™t a™x¨Ñ-Ô-Ñ-°Ñ4�Ý% a¨¨A°©EÑ2Ô2°1Ô5ˆAÝ�'¥(¨1¨Q©3¡-¤-°°TÑ:Ô:Ý˜‘”˜tñ%ô %ˆCå�7Ý˜˜B ! a¡%™=™¨!¨a°°Q±©i©-Ñ8Ñ9Ô9Ý� ! Q¡$™œ¨Ñ.Ô.°ñ6ô 6õ ˜˜TÑ"Ô" Dñ*ô *ð *ð ��A‘‰IˆØ˜B™ &Ð(Ð(�"�"¨aˆØˆq‰5�AŠ:ˆ:Ø�AŠvˆvÝÝ˜WÑ%Ô%Ý�X a™[œ[¨$Ñ/Ô/°ñ7ô 7ð 7õ ˆLÝ˜q !Ñ$Ô$ð 	ÝˆLØ�1�q‘5‰z˜1˜q™5Ñ!ˆØ�s�3˜˜q™ !Ñ$Ô$Ñ$ˆÝ! ! Q¨Ñ*Ô*¨1Ô-ˆÝÝ•H˜Q˜q™S‘M”M 2 tÑ,Ô,Ý�Q‰KŒK˜ñô ˆõ •wÝ�Q�w‘YÑÔÝ•X˜a‘[”[ $Ñ'Ô'¨ñ/ô /õ �C˜ÑÔ ñ&ô &ð 	&ð
 	ˆA‚v€v��a’�Ý”˜"˜bÑ!Ô!¥4¤8¨B°Ñ#3Ô#3ˆBˆØ��B‘‰KˆØ�!‰t�A‰v˜˜Q™ ™ R™Ñ'Ý��"‘�R‘˜‘
�H RœL¨1Ñ,¨bÑ1Ô1ñ2Ø57ñ8ˆà�!‰t�A‰v˜˜Q™ ™ R™Ñ'Ý��"‘�R‘˜‘
�H RœL¨1Ñ,¨bÑ1Ô1ñ2Ø57ñ8ˆå•r˜"˜b $Ñ'Ô'­¨B°°DÑ)9Ô)9¸4Ñ@Ô@Ð@ØˆA‚v€vØ�‰s�Q‰w�˜C¥¨"¤°Ñ!1°2Ñ6Ô6Ñ6¸"Ñ<ˆØ�A˜‘E˜R ™U Q™Y¨™NÑ*¨R°©UÑ3°qÑ8Ñ8¸AÑ=ˆÝ•wÝ�R‰LŒLÝˆr�2�tÑÔ˜dñ$ô $õ ˆr�2�tÑÔñô ð 	ð ˆQ‰3�‰7•C˜�H RœL¨1Ñ,¨bÑ1Ô1Ñ
1°RÑ	7€BØ
ˆq�B˜‘E˜A‘I ‘>Ñ! QÑ&Ñ
&¨!Ñ	+€BÝ•2�b˜"˜dÑ#Ô#¥R¨¨B°Ñ%5Ô%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Ô7¸Ñ>Ô>€AÝ��DÑÔ€AÝ�7 1 a™=œ=¨$Ñ/Ô/�F€BˆÝÝ��DÑÔÝ•˜˜qÑ!Ô! 2Ñ&Ô&¨ñ	.ô 	.€Aõ 	•˜˜2‘”¥¨¨A¨tÑ 4Ô 4°dÑ;Ô;€AÝ�1�a‰=Œ=Ðr+   r<   Úreturnc                 ó¼   — d}d}t          ¦   «         D ]H}|d|z  dz   z  }| |z
  }|dk     r n/||         }||dz   z  }d|k    r|||         z  }||dz  r| n|z  }ŒI|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ŒWð 
 ð 
 ˆØ��1‘�q‘ÑˆØ�‰YˆØ�Š6ˆ6ØˆEØ�ŒHˆØ
ˆa�!‰e‰ˆà�Š7ˆ7Ø��b”‰MˆAØ	�1�q‘5ÐˆaˆRˆR˜aÑˆˆØ€Hr+   c           	      óŽ  ‡‡‡— | dk     rdS | dk    r | t                                ¦   «         z
  dk     s#t                                ¦   «         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k    r+ || |¦  «        dk     r|dz  }|dk    r || |¦  «        dk     °|}|dz  }||z
  dk    r.||z   dz  } || |¦  «        x}dk     r|}n|dk    r|}||z
  dk    °.|}	|	dk    rt          d¦  «        ‚t          }
t          t          t!          dd|¦  «        |¦  «        t#          |¦  «        |¦  «        }t          t%          d¦  «        |¦  «        }t'          d|	¦  «        D ]q}t)          | ||¦  «        }t+          | ||||¦  «        }t-          |
t          ||¦  «        |¦  «        }
t/          t1          t3          |¦  «        ¦  «        ¦  «        dz   }Œrt	          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Ï   sU   ø€ ÝŒyˆØ�$�$�q‘'”'‰z˜B˜t˜t A q¨1¡u¡I™œÑ.­t¬y¸¸D¸DÀ¹G¼G¹ÀA¹Ñ/FÔ/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€uØˆqØ	ˆWŠˆ˜�^×8Ò8Ñ:Ô:Ñ:¸RÒ?Ð?Ý×'Ò'Ñ)Ô)¨QÒ.Ð.°1°v²:°:õ ˜aÑ Ô Ð Ø�™	œ	Ð!Ð!Ý‰ŒˆåÝŒ��1‘�R‘˜#‘ÑÝŒ��1‘‰Œñ	Ý”x ‘|”|ñ$à&'ñ(ñ )ô )õ 	Œ	�"‰Œñ€Eõ �5˜‘9˜s‘?Ñ#Ô#Ð#€Dˆ1ð
 
�DŒG�Q‰J‰˜�DœI a™LœLÑ(Ñ	)€BÝ	Œ•”˜1‘”Ñ	˜bÑ	 €BÝ	Œ•”˜3‘”Ñ	€BðGð Gð Gð Gð Gð Gð Gõ ˆa•”˜1˜c™6Ñ"Ô"Ñ
#Ô
#€CØˆ2ˆa�‰:Œ:˜ÒÐÐÐØ
�Š(ˆ(�r�r˜!˜S‘z”z CÒ'Ð'Ø�‰	ˆð �Š(ˆ(�r�r˜!˜S‘z”z CÒ'Ð'à€EØ
�‰'€CØ
�‰+˜Š/ˆ/Ø�5‰[˜1ÑˆØ�"�Q˜‘(”(ˆNˆB˜cÒ!Ð!ØˆCˆCØ�3ŠYˆYØˆEð �‰+˜Š/ˆ/ð 	€Að 	ˆ5‚y€yÝ˜Ñ)Ô)Ð)õ 	€AÝ•X�m¨A¨q°!Ñ4Ô4°aÑ8Ô8½&À¹)¼)ÀQÑGÔG€FÝ•X˜a‘[”[ !Ñ$Ô$€EÝ�1�a‰[Œ[ð *ð *ˆÝˆq�!�Q‰KŒ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_targetFc                 ó$   — 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ÐQÐQÐQÐQÐQØˆ>˜!ÑÔÐ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Ð CÐ CÐ CÐ CÐ CÐ CÐ CØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7à €€€Ø Ð Ð Ð Ð Ð ð.ð .ð .ð.U=ð U=ð U=ðnð ð ð$ €�!�Q�ÑÔð�cð  Cð ð ð ñ Ôðð4J0�#ð J0˜#ð J0ð J0ð J0ð J0ðZ €ð tàØBðDñ Dô Dðð ð ñ	Dô Dðð ð r+   