K irddlmZddlmZmZdZdZegdfdZedZed Z ed Z ed Z ed Z ed Z edZedZedZedZedZedZdZedZedZedZedZedZedZedZed$dZedZedZed Zed!Z ed"Z! ed#Z"y)%)xrange)defun defun_wrappedcdx}}d}g}t|D],\}} | \} } } } }}}d}t| D],\}}|r |j| |dks!| |s'dx}}d}.gd}t| | |gD]\}}t|D]\}}|j|\}}|dkDr ||jk(rCd}|dk(r+|D]&}|j |s|t |k\s$d}n|rd||xxdz cc<r|dksx|| z }d}|r&|d|d|dzkDr|s|j |t|s)dx}}/||||fS)NFT)rrrrr) enumeratere nint_distanceninfisnpintintappendsum)ctxtermsprecdiscard_known_zerosperturb recompute extraprecdiscard term_indextermw_sc_salpha_sbeta_sa_sb_szhave_singular_nongamma_weightkw pole_count data_indexdataixndokus e/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mpmath/functions/hypergeometric.py_check_need_perturbr0sGiIG%e,(' D15.S'63Q(-%cN 9DAq66#a&>Q&3q6*..Gi481  9  )7FC*@ A % J!$ %1((+1q5=B!Q!$&A"{{1~!s1v+%) %& z*a/*V!OI $I- % %0 :a=:a=:a=3P#P1 NN: & _"& &GiQ('R Iy' 11a hypercomb() failed to converge to the requested %i bits of accuracy using a working precision of %i bits. The function value may be zero or infinite; try passing zeroprec=N or infprec=M to bound finite values between 2^(-N) and 2^M. Otherwise try a higher maxprec or maxterms. Tc d |j}|j}|j}|j}|dd} |j dd} |j d|j |} | |d<|j d} |j d} d}d} |xjdz c_|j| kDrt t||jfz|j}| dd}||}| r7ttd td |jtd |t||||\}}}}|xj|z c_|rd |vr|d }n-|jrt|jd z}n|dz|z}|j|j| }|dz|zdz|_tt|D]}||xx|z cc<|||dzz z }|r||}|r"t!|Dcgc] \}}||vs |}}}|s|j||_Sg}t!|D]\}}|\}}} }!}"}#}$| rttd|dzt|t|"t|#fztd|j#||j#|td|j#| |j#|!td|j#|"|j#|#td|j#|$|j%|j&|"|#|$fi|g| D%cgc]}%|j)|%c}%z|!D&cgc]}&|j+|&c}&zt-||D'(cgc]\}'}(|j/|'|(c}(}'z})| r td|)|j1|)t|dk(r |s|d}n|jr|j3|}nx|j3|}|D*cgc]}*|j5|*}+}*t7|+},|j5|}-|,|-z }.| r1ttd|.dtd|j|z d|.|j|z k}/| d}0n|,|jz | k}0| d}1n|,| kD}1|/r|r|j9|.rn|/r`| |dz }|}N|j5||z |j5||z krnt|0r |j}ne|1r |j:}nVd |vrnQ|dz}|}nGt=t7|.|dzt7||}2|xj|2z c_| r td||_|Scc}}wcc}%wcc}&wcc}(}'wcc}*w#||_wxYw)NverboseFmaxpreczeroprecinfprecrr zENTERING hypercomb main loopzprec =hextrahmagg333333?z Evaluating term %i/%i : %iF%iz powersz gammaz hyperz zz Value:z Cancellation:bitsz Increased precision:rz* Must start over with increased precision)rzeror r get_default_hyper_maxprec ValueError_hypercomb_msgprintr0_fixed_precisionrldexponerangelenr nstrfprodhypergammargammazippowerrfsummagmaxisnaninfmin)3rfunctionparamsrkwargsorigsumvaluedistr orig_paramsr3r4r5r6perturbed_reference_valuer8orig2rrrrrr9hr$r)revaluated_termsr term_datarrrrr r!r"abr%cvr*term_magnitudes max_magnitude sum_magnitude cancellation precision_okzero_okinf_ok increments3 r/ hypercombrl:s 88DxxH   D 88D)KjjE*GjjC$>$>t$DEGF9zz*%Hjj#G $ Fw HHNHxx'! 42B!BCCHHE ^Ff%E45h)h'#C6IJ 3GY 7 HH !HV#!&>D))sxx|,D"9v-DIIcggu- 2:,r1s6{+!A1INI AaCLA ! &)"/8/?T)1d1GCSTTxxdc!O)25)9 *% I9B6S'63QG;#As5z3s8SXFGH, sxx}E+sxx'8#((6:JK+sxx}chhsmD'388A;/ IIysyyc1??@+23aSYYq\34,23qSZZ]3425S>1SYYq^>?@,*&&q)) *,5zQ*1-##88O4xx0H3BCaswwqzCOC0MGGH-M(=8L'v>.4H'#((T/9L'#((2hY>&0W<1H,4bLF08-WWX(AAB)D01"xxH"wwHv%aKF08- L$' :C $Dbs^E(V&= V  V V&&DV&V V& V 8V& V'A7V&V!6E V& V&& V/c |j|}t|}t|}|Dcgc]}|j|}}|Dcgc]}|j|}}|jddrt|jdd} d} | |kr[|rY|| }||vrC| s|j |ds-|j ||j ||dz}|dz}n| dz } | |kr|rY|dk(r0|dk(r|j ||fi|S|dk(r#|j|S|dk(rQ|dk(r|j|||fi|S|dk(r|j|||fi|S|dk(r|j|dd|S|dk(rh|dk(r|j|||fi|S|dk(r|j|||fi|S|dk(r|j|||fi|S|dk(rd|j|||fi|S||dzk(r|j|||||fi|S||dzkDr(|jd s|j |||||fi|St#||z\} } |j$||| | |fi|Scc}wcc}w) z0 Hypergeometric function, general case. eliminateT eliminate_allFrrr force_series)convertrF_convert_paramr=rremove_hyp0f1exp_hyp1f1_hyp1f2_hyp1f0_hyp2f1_hyp2f2_hyp2f3_hyp2f0_hypq1fq _hyp_borelrLhypsum) rr r!r"rVpqr`raelim_nonpositiver)coeffstypess r/rIrIs AA CA CA*- .Q3  a .C .*- .Q3  a .C . zz+t$!::ou= !eAACx-S[[15F 1  1 QQQ!e Av !VKCKKQ9&99 !VCGGAJ& a !VKCKKS!>v>> !VKCKKS!>v>> !VCKKAq 155 a !VKCKKS!>v>> !VKCKKS!>v>> !VKCKKS!>v>> !VKCKKS!>v>> acs||Aq#sA888 QqSN3s~~aCa:6::#c'OMFE 3::aE61 7 77C / .s I Ic .|jg|g|fi|SNrI)rrar"rVs r/hyp0f1rs 399RA ' ''r1c 0|j|g|g|fi|Srrrr`rar"rVs r/hyp1f1rs 399aS!Q ( ((r1c 2|j|g||g|fi|Srr)ra1b1b2r"rVs r/hyp1f2rs" 399bT2b'! -f --r1c 2|j||g|g|fi|Srr)rr`rarbr"rVs r/hyp2f1rs" 399aUA3q *6 **r1c 4|j||g||g|fi|Srr)rra2rrr"rVs r/hyp2f2rs$ 399bWbWQ 0 00r1c 6|j||g|||g|fi|Srr)rrrrrb3r"rVs r/hyp2f3rs& 399bWbBZ 3F 33r1c 0|j||gg|fi|Srrrs r/hyp2f0rs 399aU2a )& ))r1c 6|j|||g||g|fi|Srr)rrra3rrr"rVs r/hyp3f2r s& 399bBZB 3F 33r1cd|z | zSNr)rr`r"s r/ryry s aCaR=r1c J |\\ }rj}nd}|dk\r|jds j} xjd|dzzz c_ fd}j|gd}j dj j zz |z}|_j r"jrj|}|Sjdd |f gfi|S#|_wxYw#j$rY6wxYw) Nrrq rcLj }j|z}dd|zz }jz }jd|z}| |g|dgggjz jz gg| f}||g|dgggjz jz gg|f}||fS)Nrr)sqrtjmpq_1_2rvmpq_3_2) r%jwr.rbET1T2rarr"s r/r]z_hyp0f1..h!s! AqB1R4A aA" A3q'Ab62rAckkM3;;q=3QSUXYWYZBa&1Q%R!CKK-Q1OQSUVWBr6Mr1Trqr) rOr=rrlrJrpi _is_real_type_re NoConvergencer) rr!r"rVbtypemagzrWr]rcras ` ` @r/rurus"KJQwwqz qyN3  88D BqL("MM!RdM;IIaL!CHHSVV$4"45a7  #(9(9!(<GGAJ2I 3::aUHqc1 7 77       s* DA)D..hEsJJsxxx'>?JJqM1BQ%!QB!qsea1QZbSIB771:a.1QqS'A3ac1Q3ZRPBr6Mr1Tr)rDrOisintr isinfsignrRnanr_imrlrrrr) rr r!r"rVr`atyperarrr]rcrs ` ` @r/rwrw5sKJQKJQ wwqy 771:D qy#))A,366!9> 99Q<xx{chhqk=SXXa[=A=ww>77Q;   D a"MM!aUM>$$Q'C,=,=a,@SEVEVWXEY Ar HH H 1a%!Q=f=A H $$   HH HCHH Hs% B F FF8FF88Gc ||||f\}}}} |j} |jdd| z} d} | | z|_|j| }|jd} |jd}|jd}d}||z|z}||jz}|dz|jz}d|z }||z }||z|z}||z |z }|dz }|j dz }|j }|j }|j}|j} ||z}||z||zz|zd|dzz|z||zzz }||||z| z|zz z} || |z||z|zzz}!| |||z||zz|z z|z zd|z|zz }"||z|"z }#t|||#}||#|z |krn | |!|#}}} |dz }|||#z }$|$| kr |#S| |$z } | | kDr |j)Nr4dr7rrrr) rr=rrmpfrrGnprintrOr rPr)%rr`rarbr"rV_a_b_c_zrWr4extrar,efr$abzchc1hnzgabgcbaz2tolrGrrOmaxmagkchkakbzd1e1ftf1rgs% r/_hyp2f1_gosperrYsKQ1*KBr"R 88DjjCH-G E %< KKO GGAJ GGAJ GGAJ c!e _sckk! qS bDc!ec!e qSxxi"nxxggB$CqS1Q3KMQ!WS[!C%%89E1S5!)A+ &B#qsAg &BAs1uQrTz!|$S()1S584BQBR)F2a4y3"b!qA FAB' %   I \ !Ew'''Y r1c |\\}}\}}|\\} dk(r j|z |z dkD} j|xr|dkxsj|xr|dk} jxrPdkxrIj|xr|cxkxrdkncxs#j|xr|cxkxrdknc } | s| r&| s$j|z |z g|z |z gdSj||djdzz j zSss |dk(s|dk(rdzSj SjrZdkrUj|r |cxkrdks,nj|r|cxkrdkrn j Sn j St} | dks6j|r |dkr|dk\sj|r'|dkr"|dk\rjdd||| f||gfi|Sj} xjdz c_ | d k\rfd }j|||gfi|}nytdz d krfd }j|||gfi|}nKtdz z d kr'j||z dz z dz |zz }nt||fi|}|_ |S#|_ wxYw) NrrT)_infsignrg?ir7g?cjz }||z }d z } g| g| g||z g|||zgj|zg|f} g| g|g||z g|||zgj|z g|f}||fSr)mpq_1) r`ratabrrrrbrr"s r/r]z_hyp2f1..hsIIaKac!2rdQB4!RC!AaC1QqS'399R<.2NrdQB4!B1Q3!AaC#))B,"M2v r1g?c|z |z }|z }|z }d z }gg|g||g||gd|z g|f}|g|g||zz g||g||gd|zg|f}||fSrr) r`rarcacbrrrrbr"s r/r]z_hyp2f1..hsaCE!2!A#RAaCraURGaUQqSE2=TA31Q3q5 Aa52b'AaC5"D2v r1) r r gammaprodrepsrRrabsrrrlr)rr r!r"rVr`rrarctype convergentfinitezerodivabszrWr]rcrbs` ` @r/rzrzs JQ EKJQAvVVAaCE]Q& ))A,)16Gsyy|/FQ))A,O16Oiil*qA{{ M ! 0La1/O &'==!QqSUac1Q3Z$=G Gzz!Aa#''!) ,sww66  Q!q&Q3Jww yy|Q IIaLQ![q[ IIaLQ![q[77N 77N q6D s{syy|Q1:yy|Q1:szz!Qu 51ay!NvNN 88D B 3;   a!A1&1A1X    a!A1&1AAaC\T ! 1ac1a1g.!A#9As1Qq4V4A 2Is B1K K$c  t\}t\}ttt} d} D]} j| s| dksd} n| dks| r j||zzfi|Sdk(rMj ttz } | dkr"jdfi|jzSfdk(rtdz dkr\\zz } jz z gz z d| g}d|iffd j djg|jd |jd d } | jggzS| dkrjdkr}djif fd |jdd} j djg|jd |jd d|jddSfd}j.|zfi|S#j $r | dkDs| rYwxYw#j $rYwxYw#j $rd|vrYnwxYw|jd r t!d fdfd}j"dz }j$} dj&z}xj$dz c_t)dD]}j+ fdt)|D}j- |jg||||jd dd\}}||kr||z}n?|dz}xj$j$dzz c_|dk(sj d|_S#|_wxYw) z& Evaluates 3F2, 4F3, 5F4, ... FrTrg?g?)rprg?czz |z}||vr||}n2||dz }||zz dz |zz dz zz}|||dz zz}|||<| j| zSr)r) r$_cacher.rrrrrrrr"s r/rz_hypq1fq..terms2b AF{1I1Q3Kbd2gai"Q$r'!),,Q!W q szz"R!,, ,r1r3strict)r3rct|}||k7r` j|z j|z }D]}| j||z} D]}| j||z}|S||vr||S |dz }|dz }t D] }|||zz}t D] }| ||zz}|z}||z}|||<|Sr)rrfacrfr)kkrr$rr`ramrr r!rrrrr"s r/rz_hypq1fq..term'sBABw$swwr{2/Aa366!B</a//Aa366!B</a/F{ay QqS A!AAY /c!fQh /AY /c!fQh / FA FAF1IHr1 sum_methodzr+s+er)r3rmethodz$Attempting Euler-Maclaurin summationc3FKdgz}tfdDtfd|Dz jzzd tfdDtfd|Dz }dk(r|jz }|dz Pw)Nrc3FK|]}j|zywrloggamma).0r`rk0s r/ z._hypq1fq..log_diffs..is6Qcll1R4(6!c3FK|]}j|zywrr)rrarrs r/rz._hypq1fq..log_diffs..js31CLL2&3rrc3HK|]}j|zywrpsi)rr`rr)rs r/rz._hypq1fq..log_diffs..ms5A!B$5"c3HK|]}j|zywrr )rrarr)rs r/rz._hypq1fq..log_diffs..ns4A!B$4r )rlog)rrrcr)r r!rr"s` @r/ log_diffsz_hypq1fq..log_diffsgssB6#66333468mD DA55544456OAQ sBB!c3KjDcgc]}|c}Dcgc]}|c}}j |D] }||z}| ycc}wcc}wwr)r diffs_exp) rrar`Cr,rcr r!rrs r/ hyper_diffsz_hypq1fq..hyper_diffsts_ #.Qq.C0@q0@AA]]9R=1 E /0@sA" AA" A 7A"i2r;c3.K|] }|ywrr)rr$rs r/rz_hypq1fq..s?AQ?s)radiffsr3error _fast_abortrrz*Euler-Maclaurin summation did not convergec `t|d}t|d}g}jz }jd}tdzD]}||}|g}| g} ||gztdzD cgc]} | |k7s || |z c} z} |tD cgc] } || |z  c} z} |gtD cgc] } ||| z dzc} z} tdzD cgc]} | |k7s d|| z |z}} |j || | | | ||f|Scc} wcc} wcc} wcc} wr)listrDrrEr)argsr r!Tsrecznegzr$akrCprGnGdFnFdrrrr"s r/r]z_hypq1fq..hsL48n48n wwqyxxx&qs 5AQBA#Bt%!*GQQs1vbyGGB584aAr 44BeAh7CF177B',QqSz   ggnxx LE HHNHAY Fxx???IIdUCGG,<#&u-"JJy1 $ && c 9t A CHHaK'6++DFF F$CHr CHsK1IAI. AJI+*I+.J?JJJ&C O 0O Oc rt\}tngdc}rt\}tngdc}|jdj|d< j||||zzfi|S#j $rYnwxYwj} |jdj dz } xjdz c_djiffd j} tdjD](} | } | | z } t| | ks| c| _S | _n #| _wxYw||d zkr|jd }|s~jd kr\tdtz }jdk\rdd d |z d|z jg}n&ddd|z d|z jg}ndjg}|jdi}fd}j||fddi|\}}|t|j zdzkr|Sj )Nrmaxterms asymp_tolrr7rc||vr||S|dz }D] }|||dz zz}D] }|||dz zz}|z}||z}|||<|Srr) r$cacherr`rar r!rr"s r/rz_hyp_borel..termsvEzQxQqS A (!1Q3.! ( (!1Q3.! ( FA FAE!HHr1rrpcontourg?y@y@@ryy@ quad_kwargsc^j| jdgz|zzSr)rvrI)rr r!rr"s r/rz_hyp_borel..gs/77A2;syyc1#gqs;; ;r1rTr)rLrr=rrrrrDrrargrPrRquad)rrrr r!r"rVr)r*rrsr$rr7r.r8rIr1rs` ``` @r/rrsC Cy W3i2 W Cy W3i2 WJ9F: szz!QS!FvFF      88Djjcggai0 BSWW+   GG388$ AQA FA1v}   4AaCx**Y'wwqzD As1v&771:? "tQh!SWW=G #qy!A#sww?G cgg,jj3  <!W@D@K@3 #a&." "H  s+"A??BB!B E,E7E E c ^|\\}}\}}|\\} } \} } t} j}j}|}|jd xrj| dkD}|ry xj|z c_fd}j |||| | gddjz}t fd||| | fDdk(rj |}||_Sjd d ||| | f||| | gfi|S#j$rYnwxYw |_=#|_wxYw) Nrqrpc||z|z |z }||z}||z}i}j|d<|dz |z||zz||zz |d<d}d} d} | |vrd|z d|zz|dzzd|zz|dzz||zz ||zz||zzd|zd|dzzz | zzd| dzzz} | |z |zdz | |z |zdz z| |z dz z} j| z | || dz z| || dz zz z|| <|| | zz} t| djzkrn8| dkDr&t| t| z dkr j|| z }| } | dz } j |z}|g|dg||g||gggdf} g| g||||z g|||z ||z g|||z dz||z dzg||z dzgdz f} g| g||||z g|||z ||z g|||z dz||z dzg| |zdzgdz f}|||fS) Nrrrrp皙?r?r)rDrrrrv)rrrrXA2B2rbs1r$tprevuu1uu2t1r,rrT3rr"s r/r]z_hyp2f2..hs2b ABBBBA77AaDqD!8BrE>"R%/AaDBAEA:"#B$qt)BE/!B$"6r1u"B"seR2b5M2beBrE2BBr"uQwrRTuUVwCWY[\^Y^_`Y`XabdefbffB"seR2b5M2beBrE2BBr"uQwrRTuUVwCWZ\Y\]_Y_`aYaXbcefgcggBr2:%r1Trrqr3c3@K|]}j|ywrrrr.rs r/rz_hyp2f2..!sEs((+Err) rrOrr=rlrr rr)rr r!r"rVra1typera2typerb1typerb2typerrrWasymp_extrapreccan_use_asymptoticr]rcs` ` r/r{r{s[!$LR,2v!$LR,2v q6D 771:D 88DO%jj88   + ( O+&>MM!bBr]PQRURZRZPZM[EbBr!_EEJq ACH 3::aVVVVNPQ \U[ \\ $$  CHtCHs%/A/DDD#DD## D,c |\\}}|\\}}\} } t} j} j} xr| dz}|jd xr-j| dkDxrj | d| zkD}|rw xj|z c_fd}j |||| gddjz}t fd ||| fDdk(rj|}|| _Sjd d||| f||| gfi|S#j$rYnwxYw | _;#| _wxYw) NrrqrAcj||z |z jzz}i}j|d<djd|z|z|zdz z||z |z z||zzjz z|d<d||zj||z |z zd|z|z|zdz zzjz dzzjdd|zdz z|z|zd||z |z zd|dzzd|zz|z|zdz zzdz zz|d<d}d}d}d} ||vrd|dzzd |zd|zzd|zzdz |zzd|dzzz||z dzz d|z||zdz zz jz} ||z |z|z jz ||z |z |zjz z||z |z|zj z z} jd|zz | ||dz z| ||dz zz z||<|| d |zzz} j |zjd| zz| z} j |zjd| zz| z} t| d jzkrn>|d kDr&t|t| z d kr j|| z }|| z }| }|dz }jj|zdj zz|zjj|zdj zz |zz}d|zj gdd |g||g|gggdf} g| g||g||z ||z g|||z dz||z dzggdz f}||fS)Nrrrprr ir@rrA?)rrDmpq_1_4mpq_3_16mpq_1_16mpq_5_2rrrrrexpjrr)rrrrBrbrEs2r$rFrGrHr%rIt2r,rrrr"s r/r]z_hyp1f2..hIs RU2Xckk%9:AA77AaDckk1R472:a<8"R%(CBrEI#,,VWAaDbeCKKBr$:AbDGBJqL$II#,,VYZZZ c1R46l2ob&82b58 bQhr"unR&7&:1&<='>>?'@AAAaDBBAEA:#$QT62b52:ad?1+Akk$JC#$R472:ckk#9AbDGBJs{{1"uufq[3771:+;;a? UUAX aR(881<r7S[0!q5SZ#b'%9C%?"%"3"33bb "Q)*!CHHaRL.!89"<366!8AchhrlN#:!;.rsBs((+BrOr rrOrr=rrlrr rr)rr r!r"rVrrPrrRrrSrrrWrTrUr]rcs` ` r/rxrx-shMLR!$LR,2v q6D 771:D 88DmD!GO%jj88$  $ $#d( "4 1 O+'"PMM!bBZdQsxxZMXBbBq\BBaGq ACH 3::aVVV4r2rlA P PP $$  CHtCHs% A-DD/,D;.D//D;; Ec |\\}}\}}|\\} } \} } \} }t}j}xr|dz}j}|jd xr-j|dkDxrj |d|zkD}|r{ xj|z c_fd}j |||| | | gddjz}t fd ||| | | fDd k(rj|}||_Sjdd ||| | |f||| | | gfi|S#j$rYnwxYw |_?#|_wxYw) NrrqrWrAc 8j||z|z |z |z jzz}||z}||z|z}||z}||z||zz||zz} ||z|z} i} j| d<d| |z jd|z|zdz z||z zzjz z| d<j| ddzzjdd|zdz z| |z zd| zzdd|dzzd |zzd |zz|zdz z||z zzdz zz| d<d} d} d}d} || vr,|d|zz dz |d|zz d|zz dz z|d|zz d|zz dz z|d|zz d|zz dz z}d|dz dzzd d|z|zz|dz dzzz dd |dzzd |z|zzd| zz|zdz z|dz zzd|dzzz d |z|dzzz d| zz d | zz dd| z|zdz z|zz d|zzdz }d|dz dzzdd|z|zd|zz dzz|dz zzd| dzz}jd|zz || |dz z|| |dz zz || |dz zzz| |<| |j  d|zz}j |zjd| zz|z}j |zjd| zz|z}t|djzkrn>|dkDr&t|t|z dkr j| |z } | |z } |}|dz }jj|zdj zz| zjj|zdj zz | zz}d|zj gdd|g|||g||gggdf} g| g|||||z g|||z ||z ||z g|||z dz||z dz||z dzg||z dzgdz f} g| g|||||z g|||z ||z ||z g|||z dz||z dz||z dzg| |zdzgdz f}|||fS)NrrrprrY rrZr[rrrir\r@rAr])rrDr^r_r`rMrrrrrrbrr)rrrrrrBrCB3ABRrbrErcr$rFrGrHuu3r%rIrdr,rrrJrr"s r/r]z_hyp2f3..hs RU2Xb[^CKK%?@ABBBrB2A2be BrE)A2bAA77AaDa!eckk1R4719&=r"u&EE TUAaD;;qtQw.sAbDF|QqS?QTVWXTX?X2b!e8be+ac1B6:;RUC@DDE@F2GGAaDBBAEA:#$QqS57QqsU1R4Z\":AacE!B$JqL"I!"1Q3qtA#/C#$acAX:1Q3r6 AaC!80C#C !2ad72b57?1Q3#6r#9!#; .sHs((+HrOrjrprf)rr r!r"rVrrPrrQrrRrrSrb3typerrrTrWrUr]rcs` ` r/r|r|s!$LR,2v/2,LR,2v V q6D 771:DmD!GO 88D %jj88=  ="%((4.3t8";: 7 O+-&\MM!bBr"%5DSTUXU]U]S]M^HbBr"Q5GHHAMq ACH 3::aVVVVVDr2rSUWYFZ\] hag hh $$  CHtCHs%A1D--D?<E >D??E Ec D|\\}}\}} |j} | jdj| d<jdd||f||gfi| S#j$r|jdrYnwxYwfd} j | |d|z|z gfi|S)Nr3rrrqcj|}dz }j||gdd|gg||z dz|g|g|g|f}j ||gddd|z|z gg|d|z g||z dzgd|z g|f}||fS)Nrrr)sinpir)r`rar%rrrrr"s r/r]z_hyp2f0..hs IIaL TvvamQr!HR1Qq 1#qc" =wqna1Q3q5\"a!Wac!eWacU2 F2v r1r)copyr=rrrrl) rr r!r"rVr`rrarkwargsbr]s ` ` r/r}r}s JQ E ++-%kk*chh? szz!Qu !uaC7CC    ::n %    3==Q!AJ 1& 11sA A!A=<A=Nc R|\}}|\} } t|t|zt| t| z||z} | | z} | D cgc]} j| } } | D cgc]} j| } } j|.krd}kDrd}k(rzk(rtdkDrd}nd}|jdrt d||dk(r fd}n fd}j || | zfi|Scc} wcc} w)Nrrr3zMeijer G m,n,p,q,series =c |d}|d}g}tD]8}g}||z g}tDcgc]}||k7s ||||z }}|tDcgc]}d||z ||zc}z }tDcgc] }||||z } }| tDcgc]}d||z ||zc}z } tDcgc]}d||z ||z} }tDcgc]}||k7s d||z ||z} } j z z z jz zz} |j|||| | | | f;|Scc}wcc}wcc}wcc}wcc}wcc}wr)rErDrrr`rarr$basesexptsrgngdhnhdhzrrr+rrrr"s r/r]zmeijerg..hsRaAQRAE1X A1a).qaqAva!fQqTk>>wwh!A#a%(1swwqy>9 eUBBB?@ AL=5474>s/ E EEE!)E&E+4 E0?E0c ,|d}|d}g}tD]Y}g}dk(r ||dz g}n||dz jz g}tDcgc]}||k7s ||||z }}|tDcgc]}d||z ||zc}z }tDcgc] }||||z } }| tDcgc]}d||z ||zc}z } tDcgc]}d||z ||z} }tDcgc]}||k7s d||z||z } } j z z z jz zz } |j|||| | | | f\|Scc}wcc}wcc}wcc}wcc}wcc}wr)rErrrDrrzs r/r]zmeijerg..hsRaAQRAE1X A6qT!VHEd1fckk!n45E).qaqAva!fQqTk>>wwh!A#a%(1swwqy>9 eUBBB?@ AL=5474>s0 E8" E8?E='F F1F  F F)rFrrrr=rArl)rr r!r"rseriesrVanapbmbqr`ra_r]rr+rrs` `` @@@@r/meijergrs8 FB FB BA CG A BA CG A 2A 2A!"#AQ#A#!"#AQ#A# AA ~ q51& q51& 6saxCFQJ zz) )1Qq6: {  "  & 3==AaC *6 **e $#s D0D$c t|t|kDr||}}||}}d}|j|rn|j|rn}|j|r ||||f\}}}}n`||sX||z |dz z } || s tdd|z | zd|z ||z |z zz|j||z |||z |z || |fi|zS|j|g|g|gdd|gi||fi|S)Nct|dkS)NgGz?)r)r*s r/r-zappellf1..ok+s1v}r1rz%Analytic continuation not implementedm+nrr+r)rrr?appellf1hyper2d) rr`rrrbr*yrVr-u1s r/rr$s 1vA!1RB {{1~ R R!R| 1b" !uA#!Bb6 !HIIaCB3<1!B/ QqSAbDGAb 3;;qcrdt4TrdQq ,$* ,,r1c &|j|xs|j|} |j|xs|j|} | s(| st|t|kDr||}}||||f\}}}}|j||g||gdd|gi||fi|S)Nrr)rrr) rrrrrrbr*rrVouter_polynomialinner_polynomials r/appellf3rGs{{29#++b/{{29#++b/  s1vAaqAR2+KBr"R 3;;RGB05!+a KF KKr1c @|jd||gi|g|gd||fi|S)Nrrr)rr`rarrr*rrVs r/appellf4rQs1 3;;qe}B4RD&9!A G GGr1c j|}j|}fd}t|}t|}||d} ||d} ||d} ||d} ||d} ||d}||d}||d }||d}||d}||d}|rtd |jd z|rtd |jd zd }j}j d }d }j }|jd d |z} xj dz c_j} d}d}t| }t|}| Dcgc]}||z }}|Dcgc]}||z } }| D])}||z}|j||j|+|D])}||z}|j|| j|+| D]-}|j||z | j||z dz /| D];}|dz}|d|zz}|jd|z |z |j| |z =|D]<}|j|d|zz|j|d|zzd|zd|zzz>|D]D}|dz}|jd|z d|zz |j|d|zzd|zd|zzzF|D]O}|dz}|jd||z z|jd||z dzz| j||z dz Qj||||zfdj i|}!||!z|z}"t|"|kr|dz }nd }|dk\s|snB||"z }|D]}||z} | D]}||z} |dz }||z|z }||kDrjdv |_|Scc}wcc}w#|_wxYw)az Sums the generalized 2D hypergeometric series .. math :: \sum_{m=0}^{\infty} \sum_{n=0}^{\infty} \frac{P((a),m,n)}{Q((b),m,n)} \frac{x^m y^n} {m! n!} where `(a) = (a_1,\ldots,a_r)`, `(b) = (b_1,\ldots,b_s)` and where `P` and `Q` are products of rising factorials such as `(a_j)_n` or `(a_j)_{m+n}`. `P` and `Q` are specified in the form of dicts, with the `m` and `n` dependence as keys and parameter lists as values. The supported rising factorials are given in the following table (note that only a few are supported in `Q`): +------------+-------------------+--------+ | Key | Rising factorial | `Q` | +============+===================+========+ | ``'m'`` | `(a_j)_m` | Yes | +------------+-------------------+--------+ | ``'n'`` | `(a_j)_n` | Yes | +------------+-------------------+--------+ | ``'m+n'`` | `(a_j)_{m+n}` | Yes | +------------+-------------------+--------+ | ``'m-n'`` | `(a_j)_{m-n}` | No | +------------+-------------------+--------+ | ``'n-m'`` | `(a_j)_{n-m}` | No | +------------+-------------------+--------+ | ``'2m+n'`` | `(a_j)_{2m+n}` | No | +------------+-------------------+--------+ | ``'2m-n'`` | `(a_j)_{2m-n}` | No | +------------+-------------------+--------+ | ``'2n-m'`` | `(a_j)_{2n-m}` | No | +------------+-------------------+--------+ For example, the Appell F1 and F4 functions .. math :: F_1 = \sum_{m=0}^{\infty} \sum_{n=0}^{\infty} \frac{(a)_{m+n} (b)_m (c)_n}{(d)_{m+n}} \frac{x^m y^n}{m! n!} F_4 = \sum_{m=0}^{\infty} \sum_{n=0}^{\infty} \frac{(a)_{m+n} (b)_{m+n}}{(c)_m (d)_{n}} \frac{x^m y^n}{m! n!} can be represented respectively as ``hyper2d({'m+n':[a], 'm':[b], 'n':[c]}, {'m+n':[d]}, x, y)`` ``hyper2d({'m+n':[a,b]}, {'m':[c], 'n':[d]}, x, y)`` More generally, :func:`~mpmath.hyper2d` can evaluate any of the 34 distinct convergent second-order (generalized Gaussian) hypergeometric series enumerated by Horn, as well as the Kampe de Feriet function. The series is computed by rewriting it so that the inner series (i.e. the series containing `n` and `y`) has the form of an ordinary generalized hypergeometric series and thereby can be evaluated efficiently using :func:`~mpmath.hyper`. If possible, manually swapping `x` and `y` and the corresponding parameters can sometimes give better results. **Examples** Two separable cases: a product of two geometric series, and a product of two Gaussian hypergeometric functions:: >>> from mpmath import * >>> mp.dps = 25; mp.pretty = True >>> x, y = mpf(0.25), mpf(0.5) >>> hyper2d({'m':1,'n':1}, {}, x,y) 2.666666666666666666666667 >>> 1/(1-x)/(1-y) 2.666666666666666666666667 >>> hyper2d({'m':[1,2],'n':[3,4]}, {'m':[5],'n':[6]}, x,y) 4.164358531238938319669856 >>> hyp2f1(1,2,5,x)*hyp2f1(3,4,6,y) 4.164358531238938319669856 Some more series that can be done in closed form:: >>> hyper2d({'m':1,'n':1},{'m+n':1},x,y) 2.013417124712514809623881 >>> (exp(x)*x-exp(y)*y)/(x-y) 2.013417124712514809623881 Six of the 34 Horn functions, G1-G3 and H1-H3:: >>> from mpmath import * >>> mp.dps = 10; mp.pretty = True >>> x, y = 0.0625, 0.125 >>> a1,a2,b1,b2,c1,c2,d = 1.1,-1.2,-1.3,-1.4,1.5,-1.6,1.7 >>> hyper2d({'m+n':a1,'n-m':b1,'m-n':b2},{},x,y) # G1 1.139090746 >>> nsum(lambda m,n: rf(a1,m+n)*rf(b1,n-m)*rf(b2,m-n)*\ ... x**m*y**n/fac(m)/fac(n), [0,inf], [0,inf]) 1.139090746 >>> hyper2d({'m':a1,'n':a2,'n-m':b1,'m-n':b2},{},x,y) # G2 0.9503682696 >>> nsum(lambda m,n: rf(a1,m)*rf(a2,n)*rf(b1,n-m)*rf(b2,m-n)*\ ... x**m*y**n/fac(m)/fac(n), [0,inf], [0,inf]) 0.9503682696 >>> hyper2d({'2n-m':a1,'2m-n':a2},{},x,y) # G3 1.029372029 >>> nsum(lambda m,n: rf(a1,2*n-m)*rf(a2,2*m-n)*\ ... x**m*y**n/fac(m)/fac(n), [0,inf], [0,inf]) 1.029372029 >>> hyper2d({'m-n':a1,'m+n':b1,'n':c1},{'m':d},x,y) # H1 -1.605331256 >>> nsum(lambda m,n: rf(a1,m-n)*rf(b1,m+n)*rf(c1,n)/rf(d,m)*\ ... x**m*y**n/fac(m)/fac(n), [0,inf], [0,inf]) -1.605331256 >>> hyper2d({'m-n':a1,'m':b1,'n':[c1,c2]},{'m':d},x,y) # H2 -2.35405404 >>> nsum(lambda m,n: rf(a1,m-n)*rf(b1,m)*rf(c1,n)*rf(c2,n)/rf(d,m)*\ ... x**m*y**n/fac(m)/fac(n), [0,inf], [0,inf]) -2.35405404 >>> hyper2d({'2m+n':a1,'n':b1},{'m+n':c1},x,y) # H3 0.974479074 >>> nsum(lambda m,n: rf(a1,2*m+n)*rf(b1,n)/rf(c1,m+n)*\ ... x**m*y**n/fac(m)/fac(n), [0,inf], [0,inf]) 0.974479074 **References** 1. [SrivastavaKarlsson]_ 2. [Weisstein]_ http://mathworld.wolfram.com/HornFunction.html 3. [Weisstein]_ http://mathworld.wolfram.com/AppellHypergeometricFunction.html c|j|g} t|}|Dcgc]}j|c}S#t$r|g}Y-wxYwcc}wr)popr TypeErrorrr)dctkeyrr:rs r/parsezhyper2d..parsesWwwsB :D-11S C 11 6D 1s ?A A Arr+rzm-nzn-mz2m+nz2m-nz2n-mzunsupported key: %rrr3r;r7rrrrr]r5rpzmaxterms exceeded in hyper2d)rrdictr?keysrDrrr=rrrrIrr)#rr`rar*rrVrr r!a_ma_n a_m_add_n a_m_sub_n a_n_sub_m a_2m_add_n a_2m_sub_n a_2n_sub_mb_mb_n b_m_add_nr<outerrok_countrr3r inner_sign outer_signinner_ainner_bouter_aouter_binnerrs#` r/rrVsjP AA AA2 q'C q'C 3-C 3-CaIaIaIq&!Jq&!Jq&!J 3-C 3-CaI 01668A;>? ? 01668A;>? ? A GGE  AH 88Dzz*bg.H> BwwhJJ3iG3iG$'(qqs(G($'(qqs(G( "aCq!q! "  "aCq!q! "  &qs#qs1u% & %r" rQi' qs1u%r!t$  %   2q1u%!A#!AaC01 2  2r" qs1Q3w'!A#!AaC01 2   &a sAaCy)sAaCE{+qs1u%  & CIIgw 1 --%+-E5=:-D4y3A 1}E IA (eqje ( (eqje ( FAAIME8|''(FGGsd 2Io)(js,'AO( O 4O: OH:O O Oc  |j||z}t| t|} |fdk(s |fdk(r|jzS |z dz fd}|j||fi|S)a` Evaluates the bilateral hypergeometric series .. math :: \,_AH_B(a_1, \ldots, a_k; b_1, \ldots, b_B; z) = \sum_{n=-\infty}^{\infty} \frac{(a_1)_n \ldots (a_A)_n} {(b_1)_n \ldots (b_B)_n} \, z^n where, for direct convergence, `A = B` and `|z| = 1`, although a regularized sum exists more generally by considering the bilateral series as a sum of two ordinary hypergeometric functions. In order for the series to make sense, none of the parameters may be integers. **Examples** The value of `\,_2H_2` at `z = 1` is given by Dougall's formula:: >>> from mpmath import * >>> mp.dps = 25; mp.pretty = True >>> a,b,c,d = 0.5, 1.5, 2.25, 3.25 >>> bihyper([a,b],[c,d],1) -14.49118026212345786148847 >>> gammaprod([c,d,1-a,1-b,c+d-a-b-1],[c-a,d-a,c-b,d-b]) -14.49118026212345786148847 The regularized function `\,_1H_0` can be expressed as the sum of one `\,_2F_0` function and one `\,_1F_1` function:: >>> a = mpf(0.25) >>> z = mpf(0.75) >>> bihyper([a], [], z) (0.2454393389657273841385582 + 0.2454393389657273841385582j) >>> hyper([a,1],[],z) + (hyper([1],[1-a],-1/z)-1) (0.2454393389657273841385582 + 0.2454393389657273841385582j) >>> hyper([a,1],[],z) + hyper([1],[2-a],-1/z)/z/(a-1) (0.2454393389657273841385582 + 0.2454393389657273841385582j) **References** 1. [Slater]_ (chapter 6: "Bilateral Series", pp. 180-189) 2. [Wikipedia]_ http://en.wikipedia.org/wiki/Bilateral_hypergeometric_series )rr)rrrct|d }t| d}|Dcgc]}d|z  }}|Dcgc]}d|z  }}d z zg|Dcgc]}d|z  c}z|Dcgc]}d|z  c}z}dgdgt|zzdgt|zz}gggg|dgz| f} ||gg|dgz|d z z f} | | fScc}wcc}wcc}wcc}w)Nrrr)rrF)rr r!raaa_sr`bb_srprcrrnegrr"s r/r]zbihyper..h{s3r7m3qr7m !!!! !!!!Ci!m_S1!1 1#4FQQqS4F FTQCCL B4C= 0 RSA3YQ . RTQCZSy1} <2v "!14Fs B: B? C" C )rrrFr<rl) rr r!r"rVrrr]rrs ` @@r/bihyperrDs}` AA )C CA CA 1v1a&E/xx!| Q3!)C  3==C *6 **r1)rN)# libmp.backendr functionsrrr0r@rlrIrrrrrrrrryrurwrrzr~rr{rxr|r}rrrrrrrrr1r/rsl"+-2^$&DEEN(8(8T(())..++1144**44!8!8F! ! F4lMM^G/G/R;;|@]@]HMQMQbOiOib22(;+;+zRR8,, LLHHddL@+@+r1