K i+dZddlmZmZmZmZmZmZddlm Z ddl m Z ddl m Z ddlmZmZmZmZddlmZmZmZmZmZmZddlmZdd lmZdd lmZdd l m!Z!m"Z"dd l#m$Z$dd l%m&Z&m'Z'm(Z(e'd(dZ)e'd(dZ*e'dddZ+e'edfdZ,e'd)dZ-dZ.dZ/dZ0dZ1dZ2dZ3ddl4m5Z5dZ6dZ7dZ8d Z9d!Z:d"Z;d#Zd&Z?d'Z@y)*zIFunctions for generating interesting polynomials, e.g. for benchmarking. )AddMulSymbolsympifyDummysymbols)Tuple)S) nextprime) dmp_add_termdmp_negdmp_muldmp_sqr)dmp_zerodmp_one dmp_grounddup_from_raw_dict dmp_raise dup_random)ZZ)dup_zz_cyclotomic_poly)DMP)PolyPurePoly) _analyze_gens)subsetspublic filldedentNFc|dkrtd|z| t|n td}|dkDr^ddlm}ddlm}d}|dg}td|dzD]$}t|}|j||&|t||| S|dk(r |dzdz }n?|dk(r|d zd |dzzz dz}n(|dk(r#|d zd |dzzz d|d zzzd|dzzz dz}|r t|SS)aGenerates n-th Swinnerton-Dyer polynomial in `x`. Parameters ---------- n : int `n` decides the order of polynomial x : optional polys : bool, optional ``polys=True`` returns an expression, otherwise (default) returns an expression. rz6Cannot generate Swinnerton-Dyer polynomial of order %sx)sqrt)minimal_polynomialpolys (i`ii@) ValueErrorrr(sympy.functions.elementary.miscellaneousr" numberfieldsr$ranger appendrr) nr r'r"r$paiexs ^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/polys/specialpolys.pyswinnerton_dyer_polyr8s  Av Dq HJ J } #J1uA4  !WIq!a% A! A HHT!W  "#q'1E::Av TAX a TBq!tG^a  a TBq!tG^c!Q$h &QT 1C 7#8B?++c|dkrtd|zttt|tt}|t j ||}ntj |td}|r|S|jS)aGenerates cyclotomic polynomial of order `n` in `x`. Parameters ---------- n : int `n` decides the order of polynomial x : optional polys : bool, optional ``polys=True`` returns an expression, otherwise (default) returns an expression. rz1Cannot generate cyclotomic polynomial of order %sr ) r-rrintrrnewrras_expr)r2r r'polys r7cyclotomic_polyr?Asx Av ?! CE E %c!fb12 6D}xxa ||D%*-4,dlln,r9r&ct|}|dks|t|kDs|std|d||stj}n/t t |t|Dcgc] }t| c}}|r t|g|S|Scc}w)z Generates symmetric polynomial of order `n`. Parameters ========== polys: bool, optional (default: False) Returns a Poly object when ``polys=True``, otherwise (default) returns an expression. rz.Cannot generate symmetric polynomial of order z for ) rlenr-r Onerrr;rr)r2r'gensr>ss r7symmetric_polyrE\s  D1uCI TVWY]^__ uugdCF&;<S!W<= %4 t /4/=s!Bc^tt||||||}|r|S|jS)a\Generates a polynomial of degree ``n`` with coefficients in ``[inf, sup]``. Parameters ---------- x `x` is the independent term of polynomial n : int `n` decides the order of polynomial inf Lower limit of range in which coefficients lie sup Upper limit of range in which coefficients lie domain : optional Decides what ring the coefficients are supposed to belong. Default is set to Integers. polys : bool, optional ``polys=True`` returns an expression, otherwise (default) returns an expression. )domain)rrr=)r r2infsuprGr'r>s r7 random_polyrJts0,  1c3/6 BD4,dlln,r9c t|dd}t|trt|d|}n|r|t |j zrd}t|trt|d|}n|r|t |j zrd}|st tdg}tt|Dcgc] }|||z  c}}t|D]O}||||z z }tt|D cgc]} || k7s |||| z c} } |j|| z Qtt||D cgc] \} } | | z c} } Scc}wcc} wcc} } w)zConstruct Lagrange interpolating polynomial for ``n`` data points. If a sequence of values are given for ``X`` and ``Y`` then the first ``n`` values will be used. free_symbolsN:Fz~ Expecting symbol for x that does not appear in X or Y. Use `interpolate(list(zip(X, Y)), x)` instead.) getattr isinstancestrrr rLr-rrr0r1rzip) r2r XYokcoeffsr5numertnumerjdenomcoeffys r7interpolating_polyr\sR ND )B!S q!$ % UAY+++ !S q!$ % UAY+++  %>?@ @F U1X.1qt8. /F 1X#AaD!U1X@aqtad{@A eEk"# VQ8XUAq8 99/A9s,E* E 5 E 0E c t|dzDcgc]}tdt|z}}|d|d}}|t|ddz}|dzt|ddDcgc]}|dz c}z}|dz|dzzj|}|dzd|z|dzz|dzzdz zj|} t dg|} || | fScc}wcc}w)%Fateman's GCD benchmark: trivial GCD r#y_rNr%)r0rrPras_polyr) r2r5rSy_0y_1ur[vFGHs r7fateman_poly_F_1ris(-a!e 51s1v 5A5tQqTC c1QR5kA QQqrU+q!t+,,A!!a%!a%!!1%A6!a%"S&a-#q&(1, -66:A Q  A a7N 6 ,s B; C cl|d|dg}t|D]}t|||g}|d|d|dg}td|D]}t||t||g}|dz }t|t |d|d||}t|t |d|d||}|d |dgg|d|d|d gg}t|t |d|d||} t ||d|} t ||||} t | | ||} t||} | | | fS)r^r#rr%r!)r0rrr rrr)r2Krdr5remUVfWrSrfrgrhs r7dmp_fateman_poly_F_1rqsR 1qt A 1X Q]A  1qtQqTA 1a[, Q]HQK +, AAQ 1Q4+Q15AQ 1Q4+Q15A Q4%1QqT1Q4!A$/0AQ 1Q4+Q15A!Q1A1aA1aA1 A a7Nr9c  t|dzDcgc]}tdt|z}}|d}t|dd}t ||zdzdzg|}t ||z dz dzg|}t ||zdzdzg|}||z||z|fScc}w)7Fateman's GCD benchmark: linearly dense quartic inputs r#r_rNr%r0rrPrr)r2r5rSrbrdrhrfrgs r7fateman_poly_F_2rus(-a!e 51s1v 5A5 A$C QqrU A cAgkA ""A cAgkA ""A cAgkA ""A Q3!Q; 6sB c|d|dg}t|dz D]}t|||g}|dz }t|t|d|dz d||}t t||t |||g||}t t|||g||}t|t|dz |d||}t t|||g||}t ||||t |||||fS)rsr#rr%)r0rr rrr r) r2rkrdr5rlreroghs r7dmp_fateman_poly_F_2rys 1qt A 1q5\ Q]A  AAQ 1Q4Q/Aq9AA1a 011a8AA"Aq)AQAq)1a3AA"Aq)A 1aA 1a 3Q 66r9c vt|dzDcgc]}tdt|z}}|d}t|ddDcgc] }||dzz c}}t ||dzz|zdzdzg|}t ||dzz|z dz dzg|}t ||dzz|zdzdzg|}||z||z|fScc}wcc}w)8Fateman's GCD benchmark: sparse inputs (deg f ~ vars f) r#r_rNr%rt) r2r5rSrbr[rdrhrfrgs r7fateman_poly_F_3r|s(-a!e 51s1v 5A5 A$C !AB% (Qa!a%j ()A cAElQ"Q &++A cAElQ"Q &++A cAElQ"Q &++A Q3!Q; 6)s B1B6c zt|dz|ji|}td|dz D]"}t|gt |||dz|dz|}$t|t |d|dz d||}t tt||dz |gt |dz ||dz||||}t t|gt |dz ||dz||||}t|t |dz |d|dz |}t t|gt |dz ||dz||||}t||||t|||||fS)r{r#rr%) roner0r rrrr r)r2rkrdr5rerorwrxs r7dmp_fateman_poly_F_3rsS1q5!%%.!,A 1a!e_> !gamQUAE1 => Q 1Q4Q/Aq9AgaQ*+WQUA->Aq!LaQR TA aS'!a%"3QUAqA1aHAQAq)1a!eQ7A aS'!a%"3QUAqA1aHA 1aA 1a 3Q 66r9)ringctdt\}}}}|dz|z|dzzd|dzz|z|zzd|dzz|zzd|dzzzd|zzd|dzz|dzzzd|dzz|zzd|dzzz||dzzzd|z|zz|zdzS)Nx,y,zr%r!r(r,r#rrRr r[zs r7_f_0r,sgr"JAq!Q a46!Q$;1a4! #a1fQh .1a4 7!A# =!Q$q!t KaPQSTPTfUVh VYZ[\^_[_Y_ _bcdeghdhbh hklmnknopkp pst twx xxr9c:tdt\}}}}|dz|z|z|dz|dzz|dzzz|dz|dzzzd|dzz|z|zzd|dzz|zz|dz|dzzzd|dzz|zz||dzz|zzd|z|dzz|zzd|z|dzzz||z|dzzzd|z|z|dzzz||z|zzd|z|zzd|z|dzzzd|z|zzd |zz|dz|dzzzd|dzz|zzd|z|dzzzd |z|zzd |zzd |zzd zS)Nrr!r%r)ibi,i@iXiprrs r7_f_1r0sogr"JAq!Q a46!8ad1a4i1n $q!tAqDy 02ad719Q; >AqD JQPQTRSUVRVY VY[\]_`\`Y`abYb befghjkgkeklmem mprstptuvxyuypyz{p{ {ABCCDEGHDHH HKLMNKNOPRSOSKS SVXYZVZ[\V\]^`a]aVa adefgdghidi ilopqlqrsls svxyzvz{|~{v BEFGBGHIBI ILOPQLQ QTUWXTXYZ\]Y]T] ]`bcdfgcg`ghi`i ilnoplpqrtuqulu ux{|}x}~x BEFGBG GJMNOJO ORV VVr9ctdt\}}}}|dz|dzz|dz|dzz|zz|dz|z|dzzz|dz|dzzz|dz|dzzz|dz|z|zzd|dzz|zzd|dzz|zz|dz|dzz|zzd|dzz|dzzz |dz|dzzzd|dzz|dzzz ||zzd|zz d|zzdz S)Nrrr!r%Z irrs r7_f_2r4sgr"JAq!Q a419q!tAqDy{ "QT!VAqD[ 01a419 Aad JQPQTRSUVRVYWXZ[W[^ [^_ab^bcd^defhiei^i ilmoplpqrlrstlt twxyz|}y}w}~BCCxC CFGHIKLHLFL LOPQRORSTVWSWOW WZ[\]Z]^_ab^bZb befghehijlmimem mpqstptuvpv vyz{|~{y r9c tdt\}}}}|dz |dzz|z|dz|dzz|dzzz |dz|dzz|dzzz d|dzz|dzzz |d z|dzz|d zzz |d z|dzz|dzzzd|d zz|dzz|zzd|d zz|dzz|dzzz |d z|d zz|dzzz |dz|d zz|dzzzd|dzz|d zz|dzzz|dz|z|dzzz |d z|d zz|d zzzd|d zz|d zz|dzzz|d z|dzz|d zzz d|d zz|dzz|dzzzd |d zz|dzzzd|d zz|d zz|dzzz |dz|dzz|d zzzd|dzz|dzz|d zzz|dz|dzz|d zzz d|dzz|d zz|d zzzd |dzz|d zz|dzzz|dz|dzz|dzzzd|dzz|dzz|dzzzd|dzz|z|d zzz |dz|dzzzd|dzz|dzzz||dzz|d zzzd|z|dzz|d zzzd|z|dzz|d zzzd |z|dzz|dzzz|d z|dzzzd|d zz|d zzzd|d zzzd |d zzzS) Nr r*rr!r r%r,r(rrrs r7_f_4r<s gr"JAq!Q qD5A:a Y\]_`\`abdeae\efgijfj\j jmnoprsosmstuwxtxmxyzmz z}~@ACD@D~DEFHIEI~IJKMNJN~N NQRTUQUVWYZVZQZ[\^_[_Q_ _bcefbfghjkgkbklmoplpbp pstuvxyuysyz{}~z~s~@BCCsC CFGIJFJKLFLMNPQMQFQ QTUWXTXYZ\^Y^T^_`bc_cTc cfghiklhlflmnprmrfrstvwswfw wz{}~z~@BCCzCDEGHDHzH HKLMNPQMQKQRSUVRVKVWXZ[W[K[ [^`abdeae^efgijfj^j jmnoprsosmstuwxtxmxyz|}y}m} }@ACD@DEFHIEI@IJKMNJN@N NQRSTVWSWQWXY[\X\Q\]^`a]aQa adeghdhijlmimdmnoqrnrdr ruvwxz{w{u{|}@|@u@ABDEAEuE EHJKLNOKOHOPQSTPTHTUVXYUYHY Y\]_`\`abdeae\efgijfj\j jmnoprsosmstuwxtxmxyz|}y}m} }@ABCEFBF@FGH@HIJLMIM@M MPQSTPTUVXYUYPY Y\]^_ab^b\bcdfgcg\g gjklmoplpjpqrtuquju uxyz{x{|}@|@x@ABDEAExE EHIJKHKLMOPLPHPQRTUQUHU UXZ[\X\]^`a]aXabcefbfXf fijlmimnoqrnrir ruvwxz{w{u{|}@ |@ u@ @ C D E F H I E I C I I L N O P R S O S L S S S r9ctdt\}}}}|dz d|dzz|zz d|dzz|zzd|z|dzzz d|z|z|zzd|z|dzzz |dzz d|dzz|zzd|z|dzzz |dzzS)Nrr!r%r,rrs r7_f_5r@sgr"JAq!Q qD51QT6!8 a1fQh &1QT 1AaCE!G ;ac!Q$h FA MPQRSUVRVPVWXPX X[\]^[^_`bc_c[c cfgijfj jjr9ctdt\}}}}}d|dzz|zd|dzz|dzz|dzzzd|dzz|dzzz d|z|dzzz d|z|dzzz d |z|z|dzzzd |z|z|z|zzd |dzz|dzz|dzzz d |dzz|dzzz|dz|dzz|dzzz |dz|dzzzd|d zz|dzzzd|dzz|dzzzd|dzz|dzzz d|z|dzzz S) Nzx,y,z,tiCr(-r!r%i/^rr,r)rr r[rts r7_f_6rDsB'MAq!Q 19Q;AqDAad* *R1WQT\ 9CE!Q$J FAaQRd RUXYZUZ[\U\]^`a]aUa adfghdhijdjkldlmndn nqrstvwswqwxy{|x|q|}~AB~BrB BEFGHJKGKEKLMOPLPEP PSTVWSWXY[\X\S\]^`a]aSa adeghdhijlmimdm mpqrsuvrvpvwxz{w{p{ {~@ACD@D~DEFHIEI~I ILMNOQRNRLRSTVWSWLW WZ[\]Z]^_ab^bZb bbr9ctdt\}}}}d|dzz|dzz|dzzd|dzz|dzz|dzzzd|dzz|dzz|dzzz d|dzz|z|dzzz |dz|dzz|dzzzd|dzz|dzz|zz|dz|dzz|dzzz d|dzz|dzz|dzzzd|dzz|z|dzzz d|dzz|dzzz d|dzz|dzzzd|dzz|dzz|dzzzd|dzz|dzz|zzd|dzz|dzz|dzzz d|dzz|dzz|dzzzd|dzz|dzz|dzzz d|dzz|z|dzzz d|dzz|z|dzzz d|dzz|z|dzzz d|dzz|dzz|zz|dz|dzz|dzzz|dz|dzz|dzzz d|dzz|dzz|dzzz d |dzz|dzz|zzd|dzz|z|dzzz d|dzz|z|dzzzd|dzz|dzzz d|dzz|dzzzd|dzz|dzzzd|dzz|dzz|dzzz d|dzz|dzz|zzd|dzz|z|dzzz d|dzz|z|dzzz d|dzz|z|dzzzd|z|dzz|zzd|z|dzz|dzzz d|z|z|zz d|z|dzzzd|dzzz d|z|dzzzS) Nrr(r,r%r!rrr*rrrs r7_w_1rHsP gr"JAq!Q QT6!Q$;q!t a1fQTk!Q$. .1a41QT1A AAadF1HQPQTM QTUWXTXYZ\]Y]T]^_ab^bTb beghiklhlelmnpqmqeqrses svwyzvz{|~{vABDEAEwE EHJKLNOKOHOPQSTPTHTUVXYUYHY Y\^_`bc_c\cde\efgijfj\j jmopqstptmtuvxyuymy y|}~AB~B|BCDFGCG|G GJKLMOPLPJPQRTUQUJUVWYZVZJZ Z]^_`bc_c]cdeghdh]hij]j jmnoprsosmstuwxtxmxyz|}y}m} }@ABCEFBF@FGHJKGK@KLMOPLP@P PSTUVXYUYSYZ[]^Z^S^_`bc_cSc cfghiklhlflmnfnoprsosfs svwxy{|x|v|}~v~@BCCvC CFGHIKLHLFLMNFNOPRSOSFS SVWXY[\X\V\]^`a]aVabcVc cfgijfjklnokofopqstptft twxz{w{|}@|@w@ABDEAEwE EHIJKMNJNHNOPRSOSHSTUWXTXHX X[\]^`a]a[abcefbf[fgh[h hkmnoqrnrkrstktuvxyuyky y|~@BCC|CDE|EFGIJFJ|J JMOPQSTPTMTUVXYUYMY Y\]^_ab^b\bcdfgcg\g gjklmoplpjpqrtuquju uxyz{}~z~x~@BCCxCDEGHDHxH HKLMNPQMQKQRSUVRVKVWXKX X[\]^`a]a[abc[cdeghdh[h hklmnpqmqkqrskstuwxtxkx x{|}~@ A }A {A B C {C D E G H D H {H H K L M N K N O P R S O S K S T U K U U X Y Z [ X [ \ ] _ ` \ ` X ` a b d e a e X e e h i j k h k l m h m n o h o o r s t u r u v w y z v z r z z } ~  @ B C  C } C C F G H I F I J K M N J N F N N N r9cDtdt\}}}d|dzz|dzzd|dzz|dzzzd|dzz|dzzzd |dzz|dzzz d |d zz|d zzzd|d zz|dzzzd |d zz|zzd|d zzz|dz|d zzz|dz|dzzzd |dzzz |d z|dzzz|d z|d zzz d|d zz|dzzz d|d zz|dzzz|dz|d zzz d|dzz|dzzz|dz|dzzz d |dzz|dzzzd|dzzzd |dzzz S)Nzx,yr*r!0r%rrHr,r(ri$r)rr r[s r7_w_2rLs5"oGAq! ad71a4<"QT'!Q$, &AqDA 51a41 Dr!Q$wqRSt| SVWXY[\X\V\]^`a]aVa adefgijfjdjkldl lopqrtuquou uxy{|x|}~AB~ByB BEFHIEIJKMNJNEN NQSTUWXTXQX X[\^_[_`acd`d[d dghjkgklmoplpgp pstuvxyuysyz{}~z~s~ ~ADEFHIEIAIJKMNJNAN NQRTUQUVWYZVZQZ Z]^_`bc_c]cdeghdh]h hklnokopqstptkt twyz{}~z~w~@BCCwC CFHIJLMIMFM MPRSTVWSWPW WWr9cttttt t t fSN)rrrrrrrr9r7f_polysrPs% 6464646464646 AAr9c*ttfSr)rrrr9r7w_polysrSs 646>r9)NF)r r[)A__doc__ sympy.corerrrrrrsympy.core.containersr sympy.core.singletonr sympy.ntheoryr sympy.polys.densearithr r rrsympy.polys.densebasicrrrrrrsympy.polys.domainsrsympy.polys.factortoolsrsympy.polys.polyclassesrsympy.polys.polytoolsrrsympy.polys.polyutilsrsympy.utilitiesrrrr8r?rErJr\rirqruryr|rsympy.polys.ringsrrrrrrrrrrrrrr9r7rsOA@'"##:'0/77&,&,R--4#(00.')--4::B"<  7*  7*#yV~S kbN WBr9