K iqfdZddlZddlZddlZddlefdZedZedZe dZ e dZ e dZ d Z d Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZy)a Limited tests of the elliptic functions module. A full suite of extensive testing can be found in elliptic_torture_tests.py Author of the first version: M.T. Taschuk References: [1] Abramowitz & Stegun. 'Handbook of Mathematical Functions, 9th Ed.', (Dover duplicate of 1972 edition) [2] Whittaker 'A Course of Modern Analysis, 4th Ed.', 1946, Cambridge University Press N)*cd}|xr&|jj|j|}|xr&|jj|j|}|S)NT)realaeimag)abepsress `/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mpmath/tests/test_elliptic.pympc_aer sF C (!&&))AFFC(C (!&&))AFFC(C Jsncndnct|S)Nk)qfromrs r r#s 51:rc dt_tddddk(sJtddddk(sJtddddk(sJtddddk(sJtdd djt d sJtd d djt d sJtd d djdsJtd d djt d sJtd d djtd sJtdd djdsJtdd djtd sJtdd djt d sJtdd djt d sJtdd djtd sJtdd djtd sJtdd djt d sJtdd djtd sJtd d djtd sJtd d djtd sJtd d djtd sJtd d djtd sJtdd djtd sJtdd djtd sJtdd djtd sJtdd djdsJtdd djtd sJtdd djdsJtdd djtd sJtdd djdsJtd d djdsJtd d djdsJtd d djdsJtd d djdsJtdd djdsJtdd djdsJtdd djdsJtdd djdsJtdd djdsJtdd djd sJtdd djd!sJy)"Nssrrccddnnr?rrnsncndscsdcdcsdcds?g@p4(?gTi$?g>x?g(?@gZx: ?g ~??gbUaA?g]`w73?gk?g) @g oA?gff@)mpdpsellipfunrsincoscscsectancottanhsechcothcoshsinhcschrr test_ellipfunr9%s BF D!Q 1 $$ $ D!Q 1 $$ $ D!Q 1 $$ $ D!Q 1 $$ $ D$ " % %c$i 00 0 D$ " % %c$i 00 0 D$ " % %a (( ( D$ " % %c$i 00 0 D$ " % %c$i 00 0 D$ " % %a (( ( D$ " % %c$i 00 0 D$ " % %c$i 00 0 D$ " % %c$i 00 0 D$ " % %c$i 00 0 D$ " % %c$i 00 0 D$ " % %c$i 00 0 D$ " % %d4j 11 1 D$ " % %d4j 11 1 D$ " % %d4j 11 1 D$ " % %d4j 11 1 D$ " % %d4j 11 1 D$ " % %d4j 11 1 D$ " % %d4j 11 1 D$ " % %d4j 11 1 D$ " % %a (( ( D$ " % %d4j 11 1 D$ " % %a (( ( D$ " % %d4j 11 1 D$ $ ' '(> ?? ? D$ $ ' '(> ?? ? D$ $ ' '(> ?? ? D$ $ ' '(= >> > D$ $ ' '(= >> > D$ $ ' '(= >> > D$ $ ' '(> ?? ? D$ $ ' '(> ?? ? D$ $ ' '(> ?? ? D$ $ ' '(= >> > D$ $ ' '(= >> > D$ $ ' '(= >> >rc dt_tt}|tk(sJdt_t ddz t dft ddz t dft ddz t d ft d dz t d ft d dz t d ft ddz t dft ddz t dft ddz t dft ddz t dft ddz t dfg }|D]1}|d}tt |}|j |dr1Jdt_y)Ndr z0.006584651553858370274473060z0.01394285727531826872146409z0.02227743615715350822901627z0.03188334731336317755064299z0.04321391826377224977441774z0.05702025781460967637754953z0.07468994353717944761143751z0.09927369733882489703607378 z0.1401731269542615524091055rr)r)r*calculate_nomezerompfsqrtr)qmath1ims r test_calculate_nomerNSsN BFtA 99 BF!fRi<= >!fRi;< =!fRi;< =!fRi;< =!fRi;< =!fRi;< =!fRi;< =!fRi;< =!fRi:; <!fRi:; < >E aD 47 #ttAaDzz BFrc dt_tx tddD]t  }|dz dzk(rJt t dfD]2tddD]!tjt fd#4t dz t dz t d}t d }|j|sJt d }t d }|j|sJt d }t d }|j|sJt d }t d }|j|sJt}tdz }tdD]j}ttj}t |t d|}|jdsJt d|}|jdrjJdt_y)Nr<rrAr>ctSNjtheta)nrJzsr rztest_jtheta..wsfQ1orr= z0.1069552990104042681962096z1.101385760258855791140606z1.178319743354331061795905r?z0.8219318954665153577314573r@rr)r)r*rGrangerSonerHpytestraises ValueErrorrpistrrandom) valuer resultz1z2rLqstringrTrJrUs @@@r test_jthetardms BF LA 1QZ"q!Q1q ! "3q6]?q ?A MM*&= > ?? BA BA + ,C Aq!_F 99S>> * +C Aq!_F 99S>> * +C Aq!_F 99S>> + ,C Aq!_F 99S>> B AB 2Yfmmo& L2q!yy||2q!yy|| BFrc8dt_txjdz c_tddz tdz z tddz tzz txjdzc_tdtdtzz}t dd }txjdz c_tddz td z z tddz tzz txjdzc_t jtfd d t_d tzdz }td dz tddz tzztdtdtzz}dt_t d |}|j|sJdt_ddtzz}ddtzzt d |}dt_t d |}|j|sJdt_dtz}ttdz}td dD]I}dt_|d td d|zz z zt d |}dt_t d |}K|j|sJdt_t ddddjdsJt ddddjdsJdt_t dddd}|jdsJt dddd}|jdsJy)NrBr=i@BrDz32.0031009628901652627099524264z16.6153027998236087899308935624r?rictddS)Nr?rrR)rJsr rz&test_jtheta_issue_79..sfQ1orr;l'e [> lI5ltQh z$2.4439389177990737589761828991467471z$0.5446453005688226915290954851851490Pr@r(rr>g@rrEgl2<@2g3m,z21359.048926806828939547859396600218966947753213803z4-6148327726309051673317975084654262.4119215720343656) r)r*rHrXjrSrYrZr[rexprW) r r`rUr1r2q1rTrrJs @r test_jtheta_issue_79rpsBFFFbLF Ar CIAr A -AFFbLF / 0 / 01 4 5C Aq!_FFFbLF Ar CIAr A -AFFbLF MM*56BF 1aA OV#c/&:6&AA&EEA 4 5 4 5q 8 9C BF Aq!_F 99S>> BF AaCA c!e A 1aB BF 1aB 5599 BF AA QqSB1a[ CF2q5L ! Aq!_ Aq!_  5599 BF !S$ " % %&6 77 7 !S$ # & &'< == = BFq#tQA 44D EE Eq#tR A 44F GG Grcxdt_ttd}t dD]}t t j }t|}t dt j z}t|}td||dztdt|dzz}td||dztdt|dzz}td||dztdt|dzz}||z |z} | jd|sJt d t j z}t|}td||dztdt|dzz}td||dztdt|dzz}td||dztdt|dzz}||z |z} | jd|sJtd||dztdt|dzz}td||dztdt|dzz}td||dztdt|dzz}||z |z} | jd|sJtd||dztdt|dzz}td||dztdt|dzz}td||dztdt|dzz}||z |z} | jd|sJtdt|dz}tdt|dz}tdt|dz}||z|z } | jd|rJd t_y ) z Tests the some of the jacobi identidies found in Abramowitz, Sec. 16.28, Pg. 576. The identities are tested to 1 part in 10^98. nrfr=rr>r@r?rr;rN) r)r*ldexpr rWr]r^rHrSrGr) eps1rLrcrJzstringrUterm1term2term3equalitys r test_jtheta_identitiesrzs2 BF b>D 2Y2%fmmo& Lb() L1a!#q$(:A(=>1a!#q$(:A(=>1a!#q$(:A(=>5=5({{1d#$#c&--/)* L1a!#q$(:A(=>1a!#q$(:A(=>1a!#q$(:A(=>5=5({{1d#$# 1a!#q$(:A(=>1a!#q$(:A(=>1a!#q$(:A(=>5=5({{1d#$# 1a!#q$(:A(=>1a!#q$(:A(=>1a!#q$(:A(=>5=5({{1d#$#4#a'4#a'4#a'5=5({{1d#$#e2%fBFrc dt_tddz tdz z}tddz tdz z}tdtdtzz}t d||}t ||sJtd td tzz}t d ||}t ||sJtd td tzz}t d||}t ||sJtdtdtzz }t d||}t ||sJdt_tddz tdz z}tddz tdz z}txjdz c_ddt d d|t dd|t dd|g}dt d||t d ||t d||t d||g}|d |dzd z|d|d zd zz |d|dzd zz|d|dzd z|d|dzd zz |d|d zd zz|d|dzd z|d|d zd zz |d |dzd zz|d|dzd z|d|dzd zz |d |d zd zz|d dz|ddzz|ddzz g}txjdzc_|D]}t |tdrJdt_y)Nrfrr@rDr?rCz%0.31618034835986160705729105731678285z%0.07542013825835103435142515194358975z$1.6530986428239765928634711417951828z$0.2015344864707197230526742145361455r>z$1.6520564411784228184326012700348340z$0.1998129119671271328684690067401823z%0.37619082382228348252047624089973824z%0.15623022130983652972686227200681074r;r=rr)r)r*rHrjrSr dosmpc)rUrJr rortxs r test_jtheta_complexrs BF Aq1Q3A Aq1Q3A 5 6 5 6 : ;Cq!QA !S>> 4 5 4 5 9 :Cq!QA !S>> 4 5 4 5 9 :Cq!QA !S>> 5 6 5 6 : ;Cq!QA !S>>BF Aq1Q3A Aq1Q3AFFbLF 1fQ1ovaAq!Q@A F1aOVAq!_fQ1ovaAOA A$qt)a1Q4!9q. (AaD!A$J? : 1adQ!A$qt)a'1Q41:/9 1adQ!A$qt)a'1Q41:/9 1adQ!A$qt)a'1Q41:/9 !a!A$'AaD!G#  %A FFbLF "aQ ! " BFrc^ dt_tdz tdz z}tdz tdz z t dt dtzz }t d| d}t ||sJt d t d tzz }t d | d}t ||sJt d t d tzz }t d| d}t ||sJt dt dtzz}t d| d}t ||sJtdD]}ttjzttjzzd z t dd d}t d d t dd zt dd z}|j|rJdt_tdz tdz ftdz tdz ztdz ftdz tdz tdz zftdz tdz ztdz tdz zffD]r\ }dD]h t | d }t fd|d }|j|sJt | d}t fd|d}|j|rhJttdz t}dgdz}t d| dt d| dz |d<dD]! t | d t | z | <#|d |dz|dz|dz }|jdsJdt_y)NrfrCr?rDrAz$1.5555195883277196036090928995803201z%0.02439761276895463494054149673076275rz%0.19825296689470982332701283509685662z%0.46038135182282106983251742935250009r>z%0.36492498415476212680896699407390026z%0.57743812698666990209897034525640369z&-0.38936892528126996010818803742007352z%0.66549886179739128256269617407313625r@r=r)rr>r?r@ct|SrQrRzzrTrJs r rztest_djtheta..m2q!1r)rTct|SrQrRrs r rztest_djtheta..prr)r>r?r@r) r)r*rXrjrHrSr rWr^rdiffrG) rUr r`rLrr rorlryrTrJs @@r test_djthetarCs7 BF A! A A! A 4 5 5 6 : ;C Aq!Q F &#   5 6 5 6 : ;C Aq!Q F &#   5 6 5 6 : ;C Aq!Q F &#   6 7 5 6 : ;C Aq!Q F &#   2Y  1V]]_#4 4a 7 1aA  1aOF1aO +F1aO ;ttAww BFQAQ1c!e 4 QA! s1uqs{CEAaCK8:! Aq!Q"A11:B448O8q!Q"A11:B448O8   AA A AA !Q1 fQ1a0 0AaD 2aAq!&Aq/1!2tad{QqT!AaD(H ;;q>> BFrcdt_ttt}|tk(sJt dD]M}t t j }t|}tt|}|jdrMJdt_tdz }td}ttd}t||}|j|sJtd}t||}|j|sJdt_y ) z; Test some special cases of the sn(z, q) function. r;r=rr<z0.09983341664682815230681420z0.09981686718599080096451168rN) r)r*jsnrGrWr]r^rHrrXrs)r`rLrcrJryargr rMs r test_jsnr~sBFt_F T>> 2Yfmmo& LtQ<{{1~~ "BF b&C , -C c4A a[F 99S>> , -C c]F 99S>> BFrcdt_ttj}t |}t t |}|jtsJdt_tdz }ttd}t d}t ||}|j|sJt d}t ||}|j|sJdt_y) z; Test some special cases of the cn(z, q) function. r;r<r=rz0.9950041652780257660955620z0.9950058256237368748520459rN) r)r*r]r^rHjcnrGrrXrs)rcrJrrrMr r`s r test_jcnrsBF&--/"G G A T1B 55::BF b&C c4A + ,C a[F 99S>> + ,C c]F 99S>> BFrcJdt_ttj}t |}t t |}|jtsJdt_t d}tdz }t ||}|j|sJdt_y)z; Test some special cases of the dn(z, q) function. r;r<z0.9995017055025556219713297r=rN) r)r*r]r^rHjdnrGrrX)mstringrMrr rr`s r test_jdnrs~BF&--/"G G A T1B 55:: BF + ,C b&C c]F 99S>> BFrcDdt_d}t|D]}tt j}t |}tdt jz}t |}t ||dz}t||dz}t|z |z }|jdrJt|D]}tt j} t } | j} tdt jz}t |}| dzt || dzz}t|| dz}t|z |z }|jdrJt|D]#}tt j} t | } | j} tt j}t |}| dzt|| dzz}d| dzz }t|| dz} | |z |z }|jdsJt| dz} t | | }|jtsJt| | }|jdsJ| }t|t}|jtr$Jdt_y) zx Tests the some of the jacobi elliptic function identities found on Mathworld. Haven't found in Abramowitz. r;rAr>rr=rrN)r)r*rWr]r^rHrrrXrrIrellipkrG)NrLrcrJrurUrvrwryrrMrrxKror_s r test_sn_cn_dn_identitiesrsM BF A 1X fmmo& Lc&--/)* LAq 1 Aq 1 ;&{{1~~ 1X fmmo& L FFHb() L1s1ay!|#Aq 1 ;&{{1~~ 1Xfmmo& L FFHfmmo& L1s1ay!|#AqDAq 1 5=5({{1~~ 1a4L 1IttCyyq!9{{1~~ At xx}}=@BFrcdt_tdtdtzz}tddz tdz z}tddz tdz z}t ||}t ||sJtd td tzz }t ||}t ||sJtd td tzz }t||}t ||sJd t_y)Nrfz!0.2495674401066275492326652143537z"0.12017344422863833381301051702823rr@rDr?rCz!0.9762691700944007312693721148331z!0.0307203994181623243583169154824z%0.99639490163039577560547478589753039z%0.01346296520008176393432491077244994r)r)r*rHrjrr rr)r urMros r test_sn_cn_dn_complexr+s BF 1 2 2 3a 7 8C Aq1Q3A Aq1Q3A Aq A !S>> 1 2 1 21 4 5C Aq A !S>> 5 6 5 6q 8 9C Aq A !S>> BFrczdt_tdddjdsJtdddjdsJttt djd sJtdtt jd sJtdtdz tjd sJtd tz t d tzjdsJt ddddk(sJt dddjdsJt dddjdsJt dddjdsJt dddjdsJt dddjdsJt dddjdsJd\}}}t |||jdsJt |||jdsJt |||jdsJt |||jdsJt |||jdsJt |||jdsJdD]}|t_t dddjdsJt dddjdsJt tt djdsJt tdz tdjtddsJt dddjdsJt tt djdsJt tdz tdtz jtddsJtddjtsJtddjtsJtdtjtdd sJtt tjtd!d"sJtdd jtdz sJttd jtd#d$sJtddddjd%sJtdddd&jd'sJtdddd tzjtd(d)sJttt ddjd*sJtd tzd tz ddjd+sJttt ddtz jtd,d-sJtd tzd tz dd.tzjtd/d0sJtd tzd tz t d tzjtd1d2sJt dddjtsJt dddjd3sJt dtt jd4sJt tdz tdjtd5d6sJt t tdz tjtd7d8sJt dtd9djd:rJdt_td;djd?d@AsJtdBdCddDjdEd@AsJtdFdGdHdIjdJd@AsJtdFdKdHdIjdLdMAsJtdFdNdHdIjdOd@AsJtdFdPdHdIjdQd@AsJtdFdRdHdIjdSsJtdFdTdHdIjdUsJtdVdWdXjdYsJtdZd[jd\sJtd]d^jd_sJtd`dajdbsJtd[dZjdcsJtd[d`jddsJy)eNrrr>rg2e_?r?r@gi+"?gP$M?yfFU?6?@y,R<8*y#62?z g{I|`?)ry?y?yafG?Etw\?)rArrf<r;zo1.3110287771460599052324197949455597068413774757158115814084108519003952935352071251151477664807145467230678763r(zn1.854074677301371918433850347195260046217598823521766905585928045056021776838119978357271861650371897277771871zp0.79612586584233913293056938229563057846592264089185680214929401744498956943287031832657642790719940442165621412zp-1.2138566698364959864300942567386038975419875860741507618279563735753073152507112254567291141460317931258599889zp0.58408284167715170669284916892566789240351359699303216166309375305508295130412919665541330837704050454472379308zo1.0441445654064360931078658361850779139591660747973017593275012615517220315993723776182276555339288363064476126zp0.93912050218619371196624617169781141161485651998254431830645241993282941057500174238125105410055253623847335313zq-0.53296252018635269264859303449447908970360344322834582313172115220559316331271520508208025270300138589669326136rg@zo1.1107207345395915617539702475151734246536554223439225557713489017391086982748684776438317336911913093408525532zp-1.1107207345395915617539702475151734246536554223439225557713489017391086982748684776438317336911913093408525532zo1.2260849569072198222319655083097718755633725139745941606203839524036426936825652935738621522906572884239069297zq-0.34471136988767679699935618332997956653521218571295874986708834375026550946053920574015526038040124556716711353zp0.77778596920447389875196055840799837589537035343923012237628610795937014001905822029050288316217145443865649819zo0.1983248499342877364755170948292130095921681309577950696116251029742793455964385947473103628983664877025779304zp0.77688623778582332014190282640545501102298064276022952731669118325952563819813258230708177398475643634103990878rAzp0.14297579667156753833233879421985774801466647854232626336218889885463800128817976132826443904216546421431528308zp0.13613945827770535203521374457913768360237593025944342652613569368333226052158214183059386307242563164036672709zq-0.38207561624427164249600936454845112611060375760094156571007648297226090050927156176977091273224510621553615189zo1.6490011662710884518243257224860232300246792717163891216346170272567376981346412066066050103935109581019055806zp0.94148358841220238083044612133767270187474673547917988681610772381758628963408843935027667916713866133196845063zo1.8260115229009316249372594065790946657011067182850435297162034335356430755397401849070610280860044610878657501zo1.2290661908643471500163617732957042849283739403009556715926326841959667290840290081010472716420690899886276961zq-0.61127970812028172123588152373622636829986597243716610650831553882054127570542477508023027578037045504958619422zp-1.0684038390006807880182112972232562745485871763154040245065581157751693730095703406209466903752930797510491155zo1.8249027393703805304622013339009022294368078659619988943515764258335975852685224202567854526307030593012768954zp-1.2218475784827035854568450371590419833166777535029296025352291308244564398645467465067845461070602841312456831zo1.7255030280692277601061148835701141842692457170470456590515892070736643637303053506944907685301315299153040991zp0.42360654239698954330324956174109581824072295516347109253028968632986700241706737986160014699730561497106114281zp0.44660591677018372656731970402124510811555212083508861036067729944477855594654762496407405328607219895053798354zp0.70768352357515390073102719507612395221369717586839400605901402910893345301718731499237159587077682267374159282zp0.36023392184473309033675652092928695596803358846377334894215349632203382573844427952830064383286995172598964266zp0.40348623401722113740956336997761033878615232917480045914551915169013722542827052849476969199578321834819903921z0.0796zo1.0284758090288040009838871385180217366569777284430590125081211090574701293154645750017813190805144572673802094yy$y$y$@y+͸q?3(?g:0yE>)abs_epsgn?y'1@mgQy9]տ9DBٿgQkw?yS%MbX9?gX9v?g>W[yf0č[Ꭳ5yS%MbX9yݶ#?,eĿgh㈵>yS%vq -?yv0ƾ=T󵱿yS%y?yg%Xd毿yS%vq -y9px?`?yS%yycr??^JY?y@Gz?yffffff@\(\?y@{Gz?y8Y+}ڿ<@y@y@?yRع?Y\ny@y??y;=?>%yg@y??y =R?IOyRع?Y\n?yi2)G@L !'-@)r)r*elliprdrrjelliprgelliprfr}elliprcr\ln2elliprjrHellippi)ryrUrTs r test_elliptic_integralsrDs@ BF 1Qq>  2 33 3 1Qq>  3 44 4 1aR?  4 55 5 1Qr?  L MM M 1QqS   O PP P 2a42a4 # #$R SS S 1Qq>Q   1Qr?  a  1R?  a  2a?  a  1Qq>  5 66 6 1Qq>  5 66 6 1Qq>  5 66 6 EAa 1Qq>  M NN N 1Qq>  M NN N 1Qq>  M NN N 1Qq>  M NN N 1Qq>  M NN N 1Qq>  M NN N !(bq1~  "ST TTs1Q""$TU UUq!A!!#ST TTqs1Q""3(Z ~$@A AAq1~  "TU UUq!A!!#TU UUqs1QqS!$$S*\ &AB BBq!!2#&&&tA!!3$'''q|s$U ~ @A AAr!}%V !AB BBtB""3q5)))q}%W }!@ @@q1Q""$VW WWq1Q""$VW WWq1RT"%%c+] 'AB BBq!Aa ##%VW WWr!tBqD1%((*\] ]]q!Aac"%%c+\ }'@ @@r!tBqD2a4(++C1d ~-@A AAr!tBqD!BqD),,S2c ~.@A AAqB""B3'''q1~  "ST TTqA2!!#UV VVqs1Q""3(Z ~$@A AAr!A#a ##C)[ ~%@A AAq#h-+..0ab bbQ(bRBF 7FFF 3 6 67cmq 6 rr r 5.!V 4 7 78eos 7 tt t 6=% 9 < <=isw < xx x 6=% 9 < <=fpt < uu u 6>5' : = =>jtx = yy y 6?E7 ; > >?isw > xx x 6>5' : = =>j kk k 6?E7 ; > >?k ll l ; [ 9 < <=m nn n 8X & ) )*S TT T 8X & ) )*U VV V 3 ! $ $%O PP P 8X & ) )*S TT T 8S ! $ $%O PP Prc:tttsJy)N)rM)isnanrnanr8rr test_issue_238rs   r)__doc__mpmathr^rYr r rHrGrXr+rrrrFr9rNrdrprzrrrrrrrrrr8rr rs    1v !ftntntn%)?\4.b9Hv;z+Z9v+Z#J.BH2WQrr