K i##ddlmZmZmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZmZddlmZmZddlmZddlmZddlZddlmZdZd Zd Zeddgd ed efd Zd ed efdZ edddddZ!y))fzerofrom_int from_rationalfonefhalfbitcountto_intmpf_mulmpf_divmpf_submpf_addmpf_sqrtmpf_pi mpf_cosh_sinhmpf_cosmpf_sin)_sqrt_mod_prime_poweris_quad_residue) deprecated)recurrence_memoNcountcd}dg|zadg|zat|dzdz}td|D]:}t|dk(st||z||D]}t|dk(s|t|<<td|D]d}t|dk(r|t|<|dz t|<%t|}||z}||zdk(rt||zt|<Ot||dz zt|<fy)N順rr?)_factor_totientintrange)maxnlimijxys _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/ntheory/partitions_.py_prer* s Dc$hGs4xH dCi.1 C 1c]# 1:?1Q3a( #1:?!"GAJ ## 1d^ . 1:?GAJA#HQK  AJ qD q5A:"1+a-HQK"1+q1u-HQK .c |dk(rtS|}d}t|}||zdk(r||z}|dz }||zdk(r||z}dd|zz }t|}|dk(rx|dk(rd|z} | || zz}|td|dz | z| z}t |d|dzd} t t td| z||t| |} t t td |zd| dzz ztt|||t| ||S|dk(rd|z} | || zz}|dkDr|td |dzdz | z| z}t |d|dzd} t t td| z||t| |} t t tdd |dzzzdd| dzzz ztt|dz||t| ||S|||zz}|d zd vrd nd} ||zdk(r4|dk(r)t t| tt|||StSt||stS||dz z|dz z} |td | dz |z}t |||d} t t td| z||t||} t t td| ztt|||t| ||S|dk7s|dk\rtj|dtj|d}}d||zz}||z|z|dzdz |zzt||z|z|zt|dz |z|z}||z|z|dzdz |zzt||z|z|zt|dz |z|z}t t!|||t!||||S|dk(ryd|zdztdt|dz |z|z}d|dz |dzdz dzz |dzzdzzdz}t t td t!||||t!|||Sd|zdztdt|dz |z|z}d||dzdz dzz dzzdz}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 rrr @ )ri@r )rrrpowrr r rrrrrrmathgcdr _a)nkpreck1epk2vpimodmargjacobi3_phid1d2n1n2s r)r;r;"s* Av B A A q&A+ q Q q&A+ BB BqDA B Qw 6A#Ca#g A3q!a%%%,A%aAE215A'1 r4)*23-?C7"q!q1u+./!d+T3T"D* * 6A#Ca#g A1us2q!tax--4%aAE215A'(1Q3-T: t%C7B!a%=!aQi-89!Q$.6T"D* * AIB&("a q5A:AvW%Xa[$/77Lq!$L1q5z1q5! s3q!$ $ !!Q *1 - HQqSM2t , QKw QwY  Xa[$ '/ C & &  Ava"b!488B#3B BK!tAvQR' "R HRL1,b 12578!tAvQR' "R HRL1,b 12578r"b$'BD)94@@AvsQwC"!1266" <AERUQYN*RU3q88A =w RL r2t d$ r2t   Q37CHRL1,b1 1R 7B qBEAI>!Q& &! +B 2b"d#RB%5t <sq23pisqrt8rDabcchshDEs r)_drXys  A B4 A ]1b$7>ADA 71a=$ /FBDq!2& .A 2At 4d;A 1a=r+r<returncd}d}tD]A}|d|zdzz }||z }|dkr|S||}||dzz}d|kr|||z }||dzr| n|z }C|S)zt Calculate the partition function P(n) Parameters ========== n : int nonnegative integer rr0rrr)r<prevrCpentar%npss r)_partition_recr_s A E W   1q Y 6  H H a!e  7 bMA 1q5aRa   Hr+c |dkry|dkr|tjz dkstjdk(r|dkr t|Sdtvr tt t j d|zdz dzzt jd |zz t jd z d zt jd z}t |d zd zx}}dt j dzzdt jdzz t j t jdzdz t j t jdzfd}tdt j|dz}|||dksJ|dkDr#|||dkr|dz}|dkDr |||dkr|}|dz}||z d kDr)||zdz}|||x}dkr|}n|dk\r|}||z d kDr)|} | dkDr tdt} ttt!dd||t#||} tt%d|} t'd | D]U} t)|| |}t+|| || | }t-| t|||} t/t1t3|dz}Wt t3t-| t4|S)zX Calculate the partition function P(n) Parameters ========== n : int ri@ Fri@8rg@rr1 rg?d,r0KgUUUUUU?ctj}||z |||dz z ztj||z|z zzS)Nr)r9sqrtsinh)r<Nrhc1c2c3s r)_Mz_partition.._MsJyy$q'zBtAq1uI.tyyDGA/FFFFr+r/(rz Input too bigr.2)r_ cache_lengthglobalsr*r!r9rDloglog2rhmaxceil ValueErrorrr rrrrr"r;rXr rabsr r)r<pbitsr>rArnbigsmallrjerMr^rOrPqrQdrkrlrms @@@r) _partitionrs 1u W ^88::R?  ' ' )Q .1v:a   !   1R#  1  xx|$&'( ) "  E59s?##D1 DGGQJDIIaL( )B 1 b B 3 BG a1c6" #C a:   (r!SzC'   (r!SzC' E 'C +/ 5[1 Q(NBc !C 3YE +/ A 5y)) A XmAq!4a8&)Q GF Xa[! $E 1a[* q!QK q!Q & Awq!}d + S^ $r )* vga-. //r+zpThe `sympy.ntheory.partitions_.npartitions` has been moved to `sympy.functions.combinatorial.numbers.partition`.z1.13z%deprecated-ntheory-symbolic-functions)deprecated_since_versionactive_deprecations_targetcddlm}||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<verbosefunc_partitions r) npartitionsrsBR ! r+)F)" mpmath.libmprrrrrrr r r r r rrrrrresidue_ntheoryrrsympy.utilities.decoratorrsympy.utilities.memoizationrr9 itertoolsrr*r;rXr!r_rrr+r)rs@@@@@D07 ..U=n$!Q c C  4J0#J0#J0Z  tBD Dr+