
    [hr                        S SK Jr  SSKJrJr  S rSr\/ S4S j5       r\S 5       r\S	 5       r	\S
 5       r
\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rS r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S$S j5       r\S 5       r\S 5       r\S  5       r\S! 5       r \S" 5       r! \S# 5       r"g)%   )xrange   )defundefun_wrappedc                    S=pESn/ n[        U5       GHb  u  pU	u  pppnSn[        U
5       H:  u  nnU(       a  M  U R                  UU   5      S::  d  M)  UU   (       d  M5  S=pESnM<     / SQn[        XU/5       H  u  nn[        U5       H  u  nnU R                  U5      u  nnUS:  a  M"  UU R                  :X  aT  SnUS:X  a4  U H.  nU R	                  U5      (       d  M  U[        U5      :  d  M,  Sn  O   U(       a  Mw  UU==   S-  ss'   M  US:  d  M  UU* -  nSnM     M     U(       a-  US   US   US   -   :  a  U(       d  UR                  U5        GML  [        U5      (       d  GM_  S=pEGMe     XEXg4$ )NF    T)r   r   r   r   r   )	enumeraterenint_distanceninfisnpintintappendsum)ctxtermsprecdiscard_known_zerosperturb	recompute	extraprecdiscard
term_indextermw_sc_salpha_sbeta_sa_sb_szhave_singular_nongamma_weightkw
pole_count
data_indexdataixndokus                                W/var/www/auris/envauris/lib/python3.13/site-packages/mpmath/functions/hypergeometric.py_check_need_perturbr0      s   GIG%e,
15.'3Q(-% cNDAq166#a&>Q&3q66*..G481	 #
 
 )7C*@ AJ!$1((+1q5= B!Q!$A"{{1~~!s1v+%) % "%  z*a/* V!OI $I- ( !B0 :a=:a=:a=3P#P1NN:&__"&&GiQ -R y11    a  
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                 P   U R                   nU R                  nU R                  nU R                  nUS S  n	UR	                  SS5      n
UR	                  SU R                  U5      5      nXS'   UR	                  S5      nUR	                  S5      nS nSn  U =R                   S-  sl         U R                   U:  a  [        [        XPR                   4-  5      eU R                   nU	S S  nU" U6 nU
(       a7  [        5         [        S	5        [        S
U R                   5        [        SU5        [        U UXS5      u  nnnnU =R                   U-  sl         U(       a  SU;   a  US   nO2U R                  (       a  [        U R                   S-  5      nOUS-   U-   nU R                  U R                  U* 5      nUS-   U-   S-   U l         [        [        U5      5       H  nUU==   U-  ss'   UUUS-   -  -  nM     U(       a  U" U6 nU(       a(  [!        U5       VVs/ s H  u  nnUU;  d  M  UPM     nnnU(       d  U R                  XPl         $ / n[!        U5       GH  u  nnUu  nnn n!n"n#n$U
(       a  [        5         [        SUS-   [        U5      [        U"5      [        U#5      4-  5        [        SU R#                  U5      U R#                  U5      5        [        SU R#                  U 5      U R#                  U!5      5        [        SU R#                  U"5      U R#                  U#5      5        [        SU R#                  U$5      5        U R%                  U R&                  " U"U#U$40 UD6/U  V%s/ s H  n%U R)                  U%5      PM     sn%-   U! V&s/ s H  n&U R+                  U&5      PM     sn&-   [-        UU5       V'V(s/ s H  u  n'n(U R/                  U'U(5      PM     sn(n'-   5      n)U
(       a  [        SU)5        UR1                  U)5        GM     [        U5      S:X  a  U(       d  US   nGOU R                  (       a  U R3                  U5      nGOU R3                  U5      nU V*s/ s H  n*U R5                  U*5      PM     n+n*[7        U+5      n,U R5                  U5      n-U,U--
  n.U
(       a1  [        5         [        SU.S5        [        SU R                   U-
  S5        U.U R                   U-
  :  n/Uc  Sn0OU,U R                   -
  U* :  n0Uc  Sn1OU,U:  n1U/(       a  U(       a  U R9                  U.5      (       a  OU/(       an  Uc
  US-  nUnGM  U R5                  Xn-
  5      U R5                  U5      U-
  ::  a  OU0(       a  U R                  nOsU1(       a  U R:                  nO_SU;   a  OXUS-  nUnOM[=        [7        U.US-  5      [7        UU5      5      n2U =R                   U2-  sl         U
(       a  [        S5        GMb  GMd  XPl         U7$ s  snnf s  sn%f s  sn&f s  sn(n'f s  sn*f ! XPl         f = f)NverboseFmaxpreczeroprecinfprecr   r   
   zENTERING hypercomb main loopzprec =hextrahmagg333333?z  Evaluating term %i/%i : %iF%iz
    powersz	    gammaz	    hyperz    zz
    Value:z  Cancellation:bitsz  Increased precision:   r   z*  Must start over with increased precision)r   zeror   r   get_default_hyper_maxprec
ValueError_hypercomb_msgprintr0   _fixed_precisionr   ldexponerangelenr
   nstrfprodhypergammargammazippowerr   fsummagmaxisnaninfmin)3r   functionparamsr   kwargsorigsumvaluedistr   orig_paramsr3   r4   r5   r6   perturbed_reference_valuer8   orig2r   r   r   r   r   r9   hr$   r)   r   evaluated_termsr   	term_datar   r   r   r   r    r!   r"   abr%   cvr*   term_magnitudesmax_magnitudesum_magnitudecancellationprecision_okzero_okinf_ok	increments3                                                      r/   	hypercombrl   :   s   88DxxHD88D)KjjE*GjjC$>$>t$DEG9zz*%Hjj#G $FwHHNHxx'! 42B!BCCHHE ^Ff%E45h)h'#CJ 3GY	7HH	!HV#!&>D))sxx|,D"9v-DIIcggu- 2:,r1s6{+A1INI
 AaCLA ,  &)"/8/?T/?)1d1GCS/?Txxd c !O)25)9%
I9B6S'63QG;#As5z3s8SXFG H,sxx}E+sxx'8#((6:JK+sxx}chhsmD'388A;/
 IIsyyc1??@+237aSYYq\734,23FqSZZ]F34 25S>1SYYq^>? @ ,*&&q)) *:, 5zQ*1-##88O4xx0H3BC?aswwqz?OC0MGGH-M(=8L'v>.4H'#((T/9L'#((2hY>&0W<1H1H,4bLF08-WWXAB)D01"xxH"wwHv%aKF08-  L$' :C	$<OP	I%FGi l 9k U& 43> Db s^   FX X)X/X DX *XX X(X ;XB	X #X>E;X X X%c                    U R                  U5      n[        U5      n[        U5      nU Vs/ s H  opR                  U5      PM     nnU Vs/ s H  oR                  U5      PM     nnUR                  SS5      (       a  UR                  SS5      n	Sn
X:  ap  U(       ai  X*   nX;   aM  U	(       d  U R	                  US   5      (       d-  UR                  U5        UR                  U5        US-  nUS-  nOU
S-  n
X:  a	  U(       a  Mi  US:X  a2  US:X  a  U R                  " X#40 UD6$ US:X  a  U R                  U5      $ GOUS:X  aS  US:X  a  U R                  " XU40 UD6$ US:X  a  U R                  " XU40 UD6$ US:X  a  U R                  US   S   U5      $ OUS:X  ai  US:X  a  U R                  " XU40 UD6$ US:X  a  U R                  " XU40 UD6$ US:X  a  U R                  " XU40 UD6$ US:X  a  U R                  " XU40 UD6$ OPXVS-   :X  a  U R                  " XVXU40 UD6$ XVS-   :  a+  UR                  S	5      (       d  U R                   " XVXU40 UD6$ [#        X-   6 u  pU R$                  " XVXU40 UD6$ s  snf s  snf )
z(
Hypergeometric function, general case.
	eliminateTeliminate_allFr   r   r      force_series)convertrF   _convert_paramr=   r   remove_hyp0f1exp_hyp1f1_hyp1f2_hyp1f0_hyp2f1_hyp2f2_hyp2f3_hyp2f0_hypq1fq
_hyp_borelrL   hypsum)r   r    r!   r"   rV   pqr`   ra   elim_nonpositiver)   coeffstypess                r/   rI   rI      sx   
 	AACACA*-
.#Qa #C
.*-
.#Qa #C
.zz+t$$!::ou=eAx-S[[15F5F

1

1QQQ e 	Av!VCKK9&99!VCGGAJ&V	
a!VCKK!>v>>!VCKK!>v>>!VCKKAq	155V	
a!VCKK!>v>>!VCKK!>v>>!VCKK!>v>>!VCKK!>v>>V	
c||A#A888	
qSN33~~aCa:6::#'OMF::aE1777C /
.s   I9I>c                 .    U R                   " / U/U40 UD6$ NrI   )r   ra   r"   rV   s       r/   hyp0f1r      s    99RA'''r1   c                 0    U R                   " U/U/U40 UD6$ r   r   r   r`   ra   r"   rV   s        r/   hyp1f1r      s    99aS!Q(((r1   c                 0    U R                   " U/X#/U40 UD6$ r   r   )r   a1b1b2r"   rV   s         r/   hyp1f2r      s    99bT2'!-f--r1   c                 0    U R                   " X/U/U40 UD6$ r   r   )r   r`   ra   rb   r"   rV   s         r/   hyp2f1r      s    99aUA3q*6**r1   c                 0    U R                   " X/X4/U40 UD6$ r   r   )r   r   a2r   r   r"   rV   s          r/   hyp2f2r      s    99bWbWQ000r1   c                 2    U R                   " X/X4U/U40 UD6$ r   r   )r   r   r   r   r   b3r"   rV   s           r/   hyp2f3r     s     99bWbBZ3F33r1   c                 .    U R                   " X// U40 UD6$ r   r   r   s        r/   hyp2f0r     s    99aU2a)&))r1   c                 2    U R                   " XU/XE/U40 UD6$ r   r   )r   r   r   a3r   r   r"   rV   s           r/   hyp3f2r   	  s     99bBZ3F33r1   c                     SU-
  U* -  $ Nr    )r   r`   r"   s      r/   ry   ry     s    aCaR=r1   c                 r  ^ ^^	 Uu  u  m	nT(       a  T R                  T5      nOSnUS:  a  UR                  S5      (       d   T R                  n T =R                  SUS-  -   -  sl        U	U U4S jnT R                  U/ SS9nT R	                  T	5      ST R                  T R                  5      -  -  U-  nUT l        T R                  T	5      (       a'  T R                  T5      (       a  T R                  U5      nU7$ T R                  " SS	U4T	/T40 UD6$ ! UT l        f = f! T R                   a     N7f = f)
Nr      rq      r   c                  H  > TR                  T	* 5      n TR                  U -  nSSU-  -  nTR                  T-
  nTR                  SU-  5      nU* U/US// / TTR                  -
  TR                  T-
  // U* 4nX/US// / TTR                  -
  TR                  T-
  // U4nXV4$ )Nr      r   )sqrtjmpq_1_2rv   mpq_3_2)
r%   jwr.   rb   ET1T2ra   r   r"   s
          r/   r]   _hyp0f1.<locals>.h!  s    !AqB1R4AaA"A3q'Ab62rAckkM3;;q=3QSUXYWYZB&1Q%R!CKK-Q1OQSUVWB6Mr1   Trq   r   )rO   r=   r   rl   rJ   r   pi_is_real_type_reNoConvergencer   )
r   r!   r"   rV   btypemagzrW   r]   rc   ra   s
   ` `      @r/   ru   ru     s)   KJQwwqzqyN33	
 88D BqL(" MM!RdM;IIaL!CHHSVV$4"45a7  ##(9(9!(<(<GGAJ2I ::aUHqc1777      		s,   D# A'D 7AD# 	D  D# #D65D6c                   ^ ^^ Uu  u  pVUu  u  pxT(       d  T R                   T-   $ T R                  T5      n	U	S:  GaP  T R                  U5      (       a  T R                  U5      S::  Gd$  T R	                  T5      (       a^  T R                  U5      T R                  U5      s=:X  a(  T R                  T5      s=:X  a  S:X  a   T R                  $   T R                  T-  $   T =R                  U	-  sl        T R                  T5      S:  mU UU4S jn
T R                  XU/SS9nT R                  U5      (       a=  T R                  U5      (       a'  T R                  T5      (       a  T R                  U5      nU7T =R                  U	-  sl        $ T R                  " SSXh4XW/T40 UD6nU$ ! T R                   a     Of = f T =R                  U	-  sl        NH! T =R                  U	-  sl        f = f)N   r   r   c                   > T(       a   TR                  TR                  U SS95      nOTR                  U 5      nST-  nUT/SU * /U/X-
  /U SU -   U-
  // U* 4nTR                  T5      T/SX-
  /U/U /X-
  SU -
  // U4nXE4$ NT)exactr   )expjpifnegrv   )	r`   ra   r   rzr   r   r   sectorr"   s	         r/   r]   _hyp1f1.<locals>.hE  s    JJsxxx'>?JJqM1BQ%!QB!qsea1QZbSIB771:a.1QS'A3ac1Q3ZRPB6Mr1   Tr   )rD   rO   isintr   isinfsignrR   nanr   _imrl   r   r   r   r   )r   r    r!   r"   rV   r`   atypera   r   r   r]   rc   r   s   `  `        @r/   rw   rw   5  s   KJQKJQwwqy771:Dqy#))A,,366!9>99Q<<xx{chhqk=SXXa[=A=ww >77Q;	D a" MM!UM>$$Q''C,=,=a,@,@SEVEVWXEYEY
Ar HHH

1a%!=f=AH $$ HHHCHHHs%    BF) )F<9G ;F<<G G-c                    XX44u  pgpU R                   n
UR                  SSU
-  5      nSn X-   U l         U R                  U	5      nU R                  S5      nU R                  S5      nU R                  S5      nSnX-  U-  nX0R                  -  nUS-   U R                  -  nSU-
  nUU-  nX-  U-  nX2-
  U-
  nUS-
  nU R                   * S-
  nU R
                  nU R                  nU R                  nU R                  n UU-   nUU-   UU-   -  U-  SUS-   -  U-  UU-   -  -  nUUUU-   U-  U-  -
  -  n UUU-  UU-   U-  -   -  n!UUUU-  UU-  -   U-
  -  U-
  -  SU-  U-  -  n"X-   U"-
  n#[        UU" U#5      5      nU" U#U-
  5      U:  a  OU U!U#pnUS-  nM  UU" U#5      -
  n$U$U:  a   U#$ UU$-  nX:  a  U R                  eGM  )Nr4   d   r7   r   r   r   r   )r   r=   rr   mpfr   rG   nprintrO   r   rP   r   )%r   r`   ra   rb   r"   rV   _a_b_c_zrW   r4   extrar,   efr$   abzchc1hnzgabgcbaz2tolrG   r   rO   maxmagkchkakbzd1e1ftf1rg   s%                                        r/   _hyp2f1_gosperr   Y  s3    *KB"88DjjCH-GE
< KKOGGAJGGAJGGAJ c!e_sckk!qSbDc!ec!eqSxxi"nxxggB$CqS1Q3KMQ!WS[!C%%89E1S5!)A+&B#qsAg&BAs1uQrTz!|$S()1S584BBR)F2a4y3"b!AFA  B'%
 I \!E'''Y r1   c                   ^ ^^ Uu  u  pVu  pxUu  u  mn	TS:X  GaK  T R                  TU-
  U-
  5      S:  n
T R                  U5      =(       a    US:*  =(       d    T R                  U5      =(       a    US:*  nT R                  T5      =(       ar    TS:*  =(       af    T R                  U5      =(       a    TUs=:*  =(       a    S:*  Os  =(       d-    T R                  U5      =(       a    TUs=:*  =(       a    S:*  Os  (       + nU
(       d  U(       a(  U(       d!  T R                  TTU-
  U-
  /TU-
  TU-
  /SS9$ T R                  XWTST R                  S-  -
  5      T R
                  -  $ T(       d$  T(       d  US:X  d  US:X  a  ST-   $ T R                  $ T R                  T5      (       ai  TS::  ac  T R                  U5      (       a  TUs=::  a  S::  d3  O  T R                  U5      (       a  TUs=::  a  S::  a  O  T R
                  $ OT R
                  $ [        T5      nUS::  dD  T R                  U5      (       a  US::  a  US:  d"  T R                  U5      (       a'  US::  a!  US:  a  T R                  " SSXhU	4XWT/T40 UD6$ T R                  n T =R                  S-  sl	        US	:  a  UU U4S
 jnT R                  " XU/40 UD6nOz[        ST-
  5      S::  a  UU4S jnT R                  " XU/40 UD6nOK[        TTS-
  -  5      S::  a'  T R                  UTU-
  TTTS-
  -  5      ST-
  U-  -  nO[        T XWTT40 UD6nUT l	        U7$ ! UT l	        f = f)Nr   r   T)_infsignr   g?ir7   g?c                    > TR                   T-
  o U-
  nST	-  nT	* /U * /TU* /UTU -
  /XU -   /TR                   U-   /U4nT	* /U* /TU/U TU-
  /XU-   /TR                   U-
  /U4nXV4$ r   )mpq_1)
r`   ra   tabr   r   r   rb   r   r"   s
          r/   r]   _hyp2f1.<locals>.h  s    IIaKc!2rdQB4!RC!AaC1qS'399R<.2NrdQB4!B1Q3!aC#))B,"Mvr1   g      ?c                    > TU -
  U-
  nTU -
  nTU-
  nST	-
  n/ / TU/X4/X/SU-
  /U4nU/U/TX-   T-
  /X/X4/SU-   /U4nXg4$ r   r   )
r`   ra   r   cacbr   r   r   rb   r"   s
           r/   r]   r     s}    aCE!2!A#RAaCraURGaUQqSE2=TA313q5	A52'AaC5"Dvr1   )r   r   	gammaprodr   epsrR   r   absr   r   rl   r   )r   r    r!   r"   rV   r`   r   ra   r   ctype
convergentfinitezerodivabszrW   r]   rc   rb   s   `  `             @r/   rz   rz     s    JQ
KJQAvVVAaCE]Q&
))A,)16Gsyy|/FQ))A, O16 Oiil*qA{{{M		!0La1/O &'==!QqSUac1Q3Z$=GG zz!a#''!),sww66  Q!q&Q3Jww yy||QIIaLLQ![q[IIaLLQ![q[ 77N  77Nq6D s{syy||Q1:yy||Q1:zz!Qu 5ay!NvNN88DB 3;
 aA1&1A 1X
 aA1&1A AaC\T!

1ac1a1g.!A#9A s1q4V4A 2I s   B3M
 
	Mc                   ^ ^^^^^^^^^^^^  [        T6 u  mn[        T6 u  mn[        T5      m[        T5      m[        T5      n	Sn
T H%  nT R                  U5      (       d  M  US::  d  M#  Sn
  O   U	S:  d  U
(       a   T R                  " TTXx-   TT-   T40 UD6$ TS:X  aN  T R                  [        T5      [        T5      -
  5      nUS::  a"  T R                  " TTS40 UD6T R                  -  $ TT4S:X  a  [        TS-
  5      S:  a  Tu  mmmTu  mmTT-   T-
  nT R                  TT-
  TT-
  TT/TT-
  TT-
  SU/5      nSU04UUUUUU U4S	 jjm  T R                  T ST R                  /UR                  S
5      UR                  SS5      S9nUT R                  TT/TTT/5      -  $ U	S:  a  T R                  T5      S::  a|  ST R                  04UUU UUU U4S jjm UR                  SS5      n T R                  T ST R                  /UR                  S
5      UR                  SS5      UR                  SS5      S9$ U UUU4S jnT R.                  " UTT-   40 UD6$ ! T R
                   a    U	S:  d  U
(       a  e  GNf = f! T R
                   a     Nf = f! T R
                   a
    SU;  a  e  Of = fUR                  S
5      (       a  [!        S5         UUU U4S jmUUU U4S jnT R"                  S-  nT R$                  n ST R&                  -  nT =R$                  S-  sl        [)        S5       H  nT R+                  U 4S j[)        U5       5       5      nT R-                  T UT R                  /UU" U5      UR                  S
5      SSS9u  nnUU:  a  UU-   n  OBUS-  nT =R$                  T R$                  S-  -  sl        US:X  d  M  T R                  S5      e   UT l        W7$ ! UT l        f = f) z
Evaluates 3F2, 4F3, 5F4, ...
Fr   Tr   g?g?)rp   r   g?c                    > TT-   T-
  U -   nX;   a  X   nO/XS-
     nUTU -   T-
  S-
  TU -   T-
  S-
  -  -  nX0US-
  -  -  nX1U '   UT	R                  TTUT
5      -  $ r   )r   )r$   _cacher.   r   r   r   r   r   r   r   r"   s       r/   r   _hypq1fq.<locals>.term  s    2b
A{IQ3Kbd2gai"Q$r'!),,!Wq	szz"R!,,,r1   r3   strict)r3   r   c                   > [        U 5      nX :w  a`  TT
R                  U 5      -  T
R                  U 5      -  nT H  oCT
R                  X@5      -  nM     T	 H  oST
R                  XP5      -  nM     U$ X!;   a  X   $ T" US-
  5      nUS-
  n[	        T5       H  osTU   U-   -  nM     [	        T5       H  osT	U   U-   -  nM     UT-  nX2-  nX1U'   U$ r   )r   r   facrfr   )kkr   r$   r   r`   ra   mr   r    r!   r   r   r   r   r"   s           r/   r   r   '  s    BAw$swwr{2A366!</aA366!</a{y QqS	A!AAYc!fQhYAYc!fQhYFAFA1IHr1   
sum_methodzr+s+er    )r3   r   methodz$Attempting Euler-Maclaurin summationc              3   R  >^ ^#    TS/-   n[        UU 4S jT 5       5      [        UU 4S jU 5       5      -
  T TR                  T5      -  -   v   Sm [        UUU 4S jT 5       5      [        UUU 4S jU 5       5      -
  nTS:X  a  UTR                  T5      -  nUv   TS-  mMT  7f)Nr   c              3   L   >#    U  H  nTR                  UT-   5      v   M     g 7fr   loggamma).0r`   r   k0s     r/   	<genexpr>._hypq1fq.<locals>.log_diffs.<locals>.<genexpr>i  s!     6#Qcll1R4((#   !$c              3   L   >#    U  H  nTR                  UT-   5      v   M     g 7fr   r  )r  ra   r   r  s     r/   r	  r
  j  s!     31CLL2&&r  r   c              3   N   >#    U  H  nTR                  TUT-   5      v   M     g 7fr   psi)r  r`   r   r)   r  s     r/   r	  r
  m  s!     5A!B$   "%c              3   N   >#    U  H  nTR                  TUT-   5      v   M     g 7fr   r  )r  ra   r   r)   r  s     r/   r	  r
  n  s!     4A!B$r  )r   log)r  r   rc   r)   r    r!   r   r"   s   `  @r/   	log_diffs_hypq1fq.<locals>.log_diffsg  s     sB6#66333468mD DA55544456OAQ s   B"B'c              3      >#    TR                  T Vs/ s H  oPM     snT Vs/ s H  o"PM     sn5      nTR                  T	" U 5      5       H  nX4-  nUv   M     g s  snf s  snf 7fr   )r   	diffs_exp)
r  ra   r`   Cr,   rc   r    r!   r   r  s
         r/   hyper_diffs_hypq1fq.<locals>.hyper_diffst  s_     #.#Qq#.C0@CqC0@AA]]9R=1E 2 /0@s   A'AA'A"
8A'i   2   r;      c              3   4   >#    U  H  nT" U5      v   M     g 7fr   r   )r  r$   r   s     r/   r	  _hypq1fq.<locals>.<genexpr>  s     ?AQs   )r   adiffsr3   error_fast_abortr   r   z*Euler-Maclaurin summation did not convergec            
      f  > [        U S T 5      n[        U TS  5      n/ nTR                  T-  nTR                  TSS9n[        TS-   5       H  nX   nU/nU* /n	X'/-   [        TS-   5       V
s/ s H  oU:w  d  M
  X   U-
  PM     sn
-   nU[        T5       V
s/ s H
  oU
   U-
  PM     sn
-   nU/[        T5       V
s/ s H  oX*   -
  S-   PM     sn
-   n[        TS-   5       V
s/ s H  oU:w  d  M
  SX   -
  U-   PM     nn
UR	                  XXXU45        M     U$ s  sn
f s  sn
f s  sn
f s  sn
f r   )listrD   r   rE   r   )argsr    r!   Tsrecznegzr$   akr  Cpr   GnGdFnFdr   r   r   r"   s                  r/   r]   _hypq1fq.<locals>.h  s@   48n48nwwqyxxx&qsABA#Bt%!*G*QQysvby*GGB5848aAr	844BeAh7hCF1h77B',QqSz<z!!V+!CF(2+zB<IIqbbd34  	 H47<s$   /	D<DD$?D)'	D.4D.)rL   r"  r   r   r   r   r   r   rI   rR   r   nsumr=   r   rD   replacerA   r   r   dpsr   rN   sumemrl   )!r   r   r   r    r!   r"   rV   a_typesb_typesr   ispolyr`   Sr.   initialr   r  r   r   truncr)   headtailerrrc   r]   r   r   r   r   r   r  r   s!   ``````                    @@@@@@@r/   r~   r~     s   
 9LC9LC
s)C
s)Cq6DF99Q<<AFF 
 ax6	::aGOSWaJ6JJ& 	Av FF3s8CH$%699S#s5f5??	!u~#ac(T/2b2rE"H--Br"uR 3RU2b514EFg; 		- 		-	#''{FJJy4Izz(D1  3As}}bWbBZ888 czcggajAoswwK 	 	$ ZZg6
	88D1SWW+vzz)7Lzz(D1!))#b1  3 3v   ==CG.v..k    	czV $	Z    		@    	*$	
 ::i  89	>	 		 	 ggnxx	LEHHNHAYxx???IIdUCGG,<#&u-"JJy1 $	 & &	c
 9tA
 CHHaK'6++DF F $ CHr	 CHsK    I# AJ 5AJ #JJJJJ87J8CO3 O3 3	O<c                   ^ ^^^^ T(       a  [        T6 u  mn[        T5      mO/ SsmnT(       a  [        T6 u  mn[        T5      mO/ SsmnUR                  ST R                  5      US'    T R                  " XXx-   TT-   T40 UD6$ ! T R
                   a     Of = fT R                  n	 UR                  ST R                  S-  5      n
T =R                  S-  sl        ST R                  04UUUU4S jjmT R                  n[        ST R                  5       H)  nT" U5      nX-  n[        U5      U
::  d  M   Us  U	T l        $    U	T l        O! U	T l        f = fXS	-   ::  a  UR                  S
5      nU(       d  T R                  T5      S:  a]  T[        S[        T5      5      -  nT R                  T5      S:  a  SSSU-  SU-  T R                  /nO&SSSU-  SU-  T R                  /nOST R                  /nUR                  S0 5      nUUU U4S jnT R                  " UU4SS0UD6u  nnU[        U5      T R                  -  S-  ::  a  U$ T R
                  e)Nr   maxterms	asymp_tolr   r7   r   c                    > X;   a  X   $ T" U S-
  5      nT H  o2X0S-
  -   -  nM     T H  oBX@S-
  -   -  nM     UT-  nX -  nX!U '   U$ r   r   )	r$   cacher   r`   ra   r    r!   r   r"   s	        r/   r   _hyp_borel.<locals>.term  s^    zxQqS	AQ3.!SQ3.!SFAFA!HHr1   r   rp   contourg      ?y               @y       @       @r   y              y       @       quad_kwargsc                 ^   > TR                  U * 5      TR                  TTS/-   U T-  5      -  $ r   )rv   rI   )r   r    r!   r   r"   s    r/   r   _hyp_borel.<locals>.g  s/    77A2;syyc1#gqs;;;r1   r  Tr   )rL   r"  r=   r   r   r   r   rD   r   r   argrP   rR   quad)r   r   r   r    r!   r"   rV   r2  r3  r   r   sr$   r   rA  r.   rB  r   Ir:  r   s   `  ```              @r/   r   r     s7   
CyW3i2W
CyW3i2WJ9F:zz!S!FvFF 88Djjcggai0BSWW+ 		 		 GG388$AQAFA1v} % 4aCx**Y'wwqzD As1v&771:? "tQh!SWW=G #qy!A#sww?G
 cgg,jj3	< 	<!W@D@K@3#a&.""H


s+   ,B BB*B
E 8E E 	Ec           	      d  ^ ^ Uu  u  pVu  pxUu  u  pu  p[        T5      nT R                  T5      nT R                  nUnUR                  S5      (       + =(       a    T R                  U5      S:  nU(       au    T =R                  U-  sl        U U4S jnT R	                  UXWX/SST R                  -  S9n[        U 4S jXWXT4 5       5      S:X  a  T R                  U5      nUUT l        $ T R                  " S	S	XhX4XWX/T40 UD6$ ! T R                   a     Of = f UT l        N:! UT l        f = f)
Nrq   rp   c                 r  > X-   U-
  U-
  nX-   nX#-   n0 nTR                   US'   US-
  U-  X#-  -   X-  -
  US'   SnSn	Sn
 X;  a  SU-
  SU -  -   U S-  -   SU-  -   US-  -   XV-  -
  X-  -   X#-  -   SU-  SUS-   -  -
  U	-  -   SU	S-  -  -   nX-
  U-   S-
  X-
  U-   S-
  -  X-
  S-
  -  nTR                   U	-  XU	S-
     -  XU	S-
     -  -
  -  Xy'   Xy   TU	* -  -  n[        U5      STR                  -  :  a  O:U	S:  a'  [        U
5      [        U5      -  S:  a  TR                  eX-  nUn
U	S-  n	M  TR	                  T5      U-  nTU/US/X#/X// / S4nT* /U * /X#X-
  /XU -
  X0-
  /X U-
  S-   X-
  S-   /X-
  S-   /ST-  4nT* /U* /X#X-
  /XU-
  X1-
  /XU-
  S-   X-
  S-   /U * U-   S-   /ST-  4nUUU4$ )	Nr   r   r   rp   皙?r        ?r   )rD   r   r   r   rv   )r   r   r   r   XA2B2rb   s1r$   tprevuu1uu2t1r5  r   r   T3r   r"   s                     r/   r]   _hyp2f2.<locals>.h  s   bABBA77AaDqD!8BE>"%/AaDBAE:"#B$qt)BE/!B$"6r1u"<RU"B25"H"NPQRTPTUVXZ[\X\U]P]_`O`"`abcdfgcgag"gC#$4719qtBwqy"913q5"AC#&7719acF
31v:0E#FADTAG^r7S[0!q5SZ#b'%9C%?"%"3"33 "Q   
2AA1wwr"Q>B"seR25M2eBE2BB"uQwruUVwCWY[Y^_`Y`XabdefbffB"seR25M2eBE2BB"uQwruUVwCWZ\Y\]_Y_`aYaXbcefgcggBr2:%r1   Tr   rq   r<  c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr   r   r  r.   r   s     r/   r	  _hyp2f2.<locals>.<genexpr>!  s     E_s((++_   !r  r   )	r   rO   r   r=   rl   r   r   r   r   )r   r    r!   r"   rV   r   a1typer   a2typer   b1typer   b2typer   r   rW   asymp_extrapreccan_use_asymptoticr]   rc   s   `  `                r/   r{   r{     sA   !$LR,2!$LR,2q6D771:D88D O %jj88 		 
 +	(O+&> MM!bB]PQRURZRZPZM[EbB!_EEJq	A CH::aVV<rr>NPQ\U[\\ $$ CHtCHs%   9A+D DD& DD& &	D/c                   ^ ^ Uu  u  pVUu  u  pxu  p[        T5      nT R                  T5      nT R                  nT=(       a    US-  nUR                  S5      (       + =(       a2    T R                  U5      S:  =(       a    T R	                  U5      SU-  :  nU(       au    T =R                  U-  sl        U U4S jnT R                  UXWU	/SST R                  -  S9n[        U 4S	 jXWU	T4 5       5      S:X  a  T R                  U5      nUUT l        $ T R                  " S
SXhU
4XWU	/T40 UD6$ ! T R                   a     Of = f UT l        N:! UT l        f = f)Nr   rq      rL  c                 ^  > TR                   X-
  U-
  TR                   -   -  n0 nTR                  US'   STR                  SU -  U-   U-   S-
  -  X-
  U-
  -  X-  -   TR                  -
  -  US'   SX-  TR                  X-
  U-
  -  SU -  U-   U-   S-
  -  -   TR                  -
  S-  -  TR                  SSU -  S-
  -  U-  U-  SX-
  U-
  -  SU S-  -  SU -  -   U-   U-   S-
  -  -   S-
  -  -   US'   SnSnSnSn Xt;  a  SUS-  -  S	U -  SU-  -   SU-  -   S-
  U-  -   SU S-  -  -   X-
  S-  -
  SU -  X-   S-
  -  -
  TR                  -   n	Xp-
  U-   U-
  TR                   -
  Xp-
  U-
  U-   TR                   -
  -  Xp-
  U-   U-   TR
                  -
  -  n
TR                  SU-  -  XUS-
     -  XUS-
     -  -
  -  XG'   XG   T* S
U-  -  -  nTR                  * U-  TR                  S5      U* -  -  U-  nTR                  U-  TR                  S5      U* -  -  U-  n[        U5      STR                  -  :  a  O?US:  a'  [        U5      [        U5      -  S:  a  TR                  eX\-  nXm-  nUnUS-  nGM}  TR                  TR                  U-  STR                  T* 5      -  -   5      U-  TR                  TR                  U-  STR                  T* 5      -  -   * 5      U-  -   nSU-  TR                  T* /SS
U/X/U // / S4nT* /U * /X/X-
  X -
  /X U-
  S-   X-
  S-   // ST-  4nUU4$ )Nr   r   rp   r   r      i      rK  r  rL        ?)r   rD   mpq_1_4mpq_3_16mpq_1_16mpq_5_2r   r   r   r   r   expjr   r   )r   r   r   rM  rb   rP  s2r$   rQ  rR  rS  r%   rT  t2r5  r   r   r   r"   s                    r/   r]   _hyp1f2.<locals>.hI  s   RU2Xckk%9:AA77AaDckk1R472:a<8"%(CBEI#,,VWAaDbeCKKr$:AbDGBJqL$II#,,VYZZZc1R46l2ob&8258bQhr"unR&7&:1&<='>>?'@ AAAaD BBAE:#$QT62b52:ad?1+<a*?#?!BE'#I!#
$+-.rT257^$<>Akk$JC#$472:ckk#9ADGBJs{{<R"S!"bCKK!7#9C#&77AaC=#!f*S1Q3Z2G#HADDQB$q&>1"uufq[3771:+;;a? UUAX
aR(881<r7S[0!q5SZ#b'%9C%?"%"3"33 "Q) * !CHHaRL.!89"<366!8AchhrlN#:!;<R?@Aa%!,q$lRHrdB"B"urgruRUmrE!GBE!G,b!A#6Br6Mr1   Tr   rW  c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr   rY  rZ  s     r/   r	  _hyp1f2.<locals>.<genexpr>r  s     B\s((++\r\  r   
r   rO   r   r=   r   rl   r   r   r   r   )r   r    r!   r"   rV   r   r]  r   r_  r   r`  r   r   rW   ra  rb  r]   rc   s   `  `              r/   rx   rx   -  sX   MLR!$LR,2q6D771:D88D mD!GO %jj88 $		$	$#d(	"  4	1O+'"P MM!bBZdQsxxZMXBbBq\BBaGq	A CH ::aVV4rrlAPPP $$ CHtCHs%    A+D. .E>E  EE 	Ec           
        ^ ^ Uu  u  pVu  pxUu  u  pu  pu  p[        T5      nT R                  T5      nT=(       a    US-  nT R                  nUR                  S5      (       + =(       a2    T R                  U5      S:  =(       a    T R	                  U5      SU-  :  nU(       aw    T =R                  U-  sl        U U4S jnT R                  UXWXU/SST R                  -  S9n[        U 4S	 jXWXUT4 5       5      S
:X  a  T R                  U5      nUUT l        $ T R                  " SSXhXU4XWXU/T40 UD6$ ! T R                   a     Of = f UT l        N<! UT l        f = f)Nr   rq   rd  rL  c           	        > TR                   X-   U-
  U-
  U-
  TR                   -   -  nX-   nX#-   U-   nX-  nX#-  XC-  -   X$-  -   n	X#-  U-  n
0 nTR                  US'   SX-
  TR                  SU-  U-   S-
  -  Xg-
  -  -   TR                  -
  -  US'   TR                   US   S-  -  TR                  SSU-  S-
  -  X-
  -  SU
-  -   SSUS-  -  S	U-  -   S
U-  -   U-   S-
  -  Xg-
  -  -   S-
  -  -   US'   SnSnSnSn X;  Ga(  USU-  -
  S-
  USU-  -
  SU-  -
  S-
  -  USU-  -
  SU-  -
  S-
  -  USU-  -
  SU-  -
  S-
  -  nSUS-
  S-  -  SSU-  U-   -  US-
  S-  -  -
  SSUS-  -  SU-  U-  -   SU	-  -   U-   S-
  -  US-
  -  -   SUS-  -  -
  SU-  US-  -  -
  SU	-  -
  S
U
-  -
  SSU	-  U-   S-
  -  U-  -
  SU-  -   S-
  nSUS-
  S-  -  SSU-  U-   SU-  -
  S-   -  US-
  -  -   SUS   -  -   nTR                  SU-  -  UXS-
     -  UXS-
     -  -
  UXS-
     -  -   -  X'   X   TR                  T* SU-  5      -  nTR                  * U-  TR                  S5      U* -  -  U-  nTR                  U-  TR                  S5      U* -  -  U-  n[        U5      STR                  -  :  a  OAUS:  a'  [        U5      [        U5      -  S:  a  TR                  eUU-  nUU-  nUnUS-  nGM  TR                  TR                  U-  STR                  T* 5      -  -   5      U-  TR                  TR                  U-  STR                  T* 5      -  -   * 5      U-  -   nSU-  TR                  T* /SSU/X#U/X// / S4nT* /U * /X#XAU -
  /XU -
  X0-
  X@-
  /X U-
  S-   X-
  S-   X-
  S-   /X-
  S-   /ST-  4nT* /U* /X#X@U-
  /XU-
  X1-
  XA-
  /XU-
  S-   X-
  S-   X-
  S-   /U * U-   S-   /ST-  4nUUU4$ )Nr   r   rp   r   rf      r   rg  rh  r         r   r  iri  rK  rL  rj  )r   rD   rk  rl  rm  rM   r   r   r   r   r   ro  r   r   )r   r   r   r   r   rM  rN  B3ABRrb   rP  rp  r$   rQ  rR  rS  uu3r%   rT  rq  r5  r   r   rU  r   r"   s                             r/   r]   _hyp2f3.<locals>.h  sR   RU2Xb[^CKK%?@ABrBAbeBE)AbAA77AaDaeckk1R4719&=ru&EETUAaD;;qtQw.sAbDF|QS?QTVWXTX?X2b!e8be+ac1B6:;RUC@DDE@F 2G GAaDBBAE:#$QqS57QqsU1R4Z\":AacE!B$JqL"I!"1Q3qtA#/C#$acAX:1Q3r6
AaC!80C#C !2ad72b57?1Q3#6r#9!#; <ac B$CEG1W$M "2ad
$+-.qS$134Q3$79:AaCF1Ha$HJKB$$OOP$QC $%acAX:aQr!B$q.A1Q3.G#G!A$#NC#&77AaC=#a!f*SQ3Z2GAPQcF
2R#SADD399aRa#88"uufq[3771:+;;a? UUAX
aR(881<r7S[0!q5SZ#b'%9C%?"%"3"33bb "Q) * !CHHaRL.!89"<366!8AchhrlN#:!;<R?@Aa%!,q$lRRL2(B"B"urR2&6b5ru7MrE!GBE!GBE!G4ruQwi1EB"urR2&6b5ru7MrE!GBE!GBE!G4rc"fQhZ1EBr2:%r1   Tr   rW  c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr   rY  rZ  s     r/   r	  _hyp2f3.<locals>.<genexpr>  s!     H5Gs((++5Gr\  ry  rp   ru  )r   r    r!   r"   rV   r   r]  r   r^  r   r_  r   r`  r   b3typer   r   ra  rW   rb  r]   rc   s   `  `                  r/   r|   r|     sr   !$LR,2/2,LR,2q6D771:D mD!GO88D
 %jj88 =		="%((4.3t8";  :	7O+-&\ MM!bB"%5DSTUXU]U]S]M^HbB"Q5GHHAMq	A CH::aVVVDrrWYFZ\]haghh $$ CHtCHs%   &A-D8 8EE 
EE 	E c                 H  ^ ^ Uu  u  pVu  px UR                  5       n	U	R                  ST R                  5      U	S'   T R                  " SSXh4XW/T40 U	D6$ ! T R                   a    UR                  S5      (       a  e  Of = fU U4S jn
T R
                  " XSU-   U-
  /40 UD6$ )Nr<  r   r   rq   c                    > TR                  U5      nST-  nTR                  X#/SSU // X-
  S-   U/U /U/U4nTR                  * X#/SSSU -   U-
  // U SU-
  /X-
  S-   /SU-
  /U4nXE4$ )Nr   r   r   )sinpir   )r`   ra   r%   r   r   r   r   r"   s         r/   r]   _hyp2f0.<locals>.h  s    IIaLTvvamQr!HRQq	1#qc"=wqna1Q3q5\"a!Wac!eWacU2Fvr1   r   )copyr=   r   r   r   rl   )r   r    r!   r"   rV   r`   r   ra   r   kwargsbr]   s   `  `       r/   r}   r}     s     JQ
++-%kk*chh?
zz!QuaC7CC ::n%% ==!AJ1&11s   AA 'A?>A?Nc                 p  ^ ^^^^^^ Uu  pxUu  p[        U5      mT[        U5      -   m[        U	5      mT[        U
5      -   mXx-   nX-   nU Vs/ s H  nT R                  U5      PM     nnU Vs/ s H  nT R                  U5      PM     nnT R                  T5      mUc3  TT:  a  SnTT:  a  SnTT:X  a  TT-   T:X  a  [        T5      S:  a  SnOSnUR                  S5      (       a  [	        STTTTU5        US:X  a  U UUUUUU4S jnOU UUUUUU4S jnT R
                  " XU-   40 UD6$ s  snf s  snf )Nr   r   r3   zMeijer G m,n,p,q,series =c            
        > U S T nU TS  n/ n[        T5       GH=  nT/nX$   T-  /n[        T5       Vs/ s H  owU:w  d  M
  X'   X$   -
  PM     nnU[        T5       Vs/ s H  nSX   -
  X$   -   PM     sn-  n[        TT5       Vs/ s H  oqU   X$   -
  PM     n	nU	[        TT5       Vs/ s H  nSX'   -
  X$   -   PM     sn-  n	[        T5       Vs/ s H  nSX   -
  X$   -   PM     n
n[        T5       Vs/ s H  owU:w  d  M
  SX'   -
  X$   -   PM     nnTR                  * TT-
  T-
  -  TTR                  T-  -  -  nUR                  XVXXU45        GM@     U$ s  snf s  snf s  snf s  snf s  snf s  snf r   )rE   rD   r   r#  r`   ra   r   r$   basesexptsr   gngdhnhdhzr   r   r+   r   r   rr"   s                r/   r]   meijerg.<locals>.h  s   RaAQRAE1Xa).q<A!Viad14i<E!H5Hqqvad{H55).q4Ad14i4E!AJ7Jqqvad{J77+0848aafQTk84+08>8aAvkafQTk8>wwh!A#a%(1swwqy>9eBBB?@  L =5474>s/   	EEE"E',E,E19	E6E6c            
      8  > U S T nU TS  n/ n[        T5       GH^  nT/nTS:X  a	  X   S-
  /nOX   S-
  TR                  T5      -  /n[        T5       Vs/ s H  owU:w  d  M
  X   X   -
  PM     nnU[        T5       Vs/ s H  nSX   -
  X'   -   PM     sn-  n[        TT5       Vs/ s H  oqU   X'   -
  PM     n	nU	[        TT5       Vs/ s H  nSX   -
  X   -   PM     sn-  n	[        T5       Vs/ s H  nSX   -
  X'   -   PM     n
n[        T5       Vs/ s H  owU:w  d  M
  SX   -   X   -
  PM     nnTR                  * TT-
  T-
  -  TTR                  T-  -  -  nUR                  XVXXU45        GMa     U$ s  snf s  snf s  snf s  snf s  snf s  snf r   )rE   rr   rD   r   r  s                r/   r]   r    s   RaAQRAE1X6T!VHEd1fckk!n45E).q<A!Viad14i<E!H5Hqqvad{H55).q4Ad14i4E!AJ7Jqqvad{J77+0848aafQTk84+08>8aAvkafQTk8>wwh!A#a%(1swwqy>9eBBB?@  L =5474>s0   	E>#E> F)FF5F	F'F)rF   rr   r   r=   rA   rl   )r   r    r!   r"   r  seriesrV   anapbmbqr`   ra   _r]   r   r+   r   r   s   `  ``          @@@@r/   meijergr    s1   FBFBBA	CGABA	CGA
A
A!"#AQA#!"#AQA#AA~q51&q51&6saxCFQJzz))1Qq6:{	 	"	 	& ==aC*6**e 	$#s   D./D3c           	         [        U5      [        U5      :  a  XepeX2p2S nU R                  U5      (       a  OU R                  U5      (       a  OU R                  U5      (       a  XeX24u  pVp#OeU" U5      (       dX  XV-
  US-
  -  n	U" U	5      (       d  [        S5      eSU-
  U* -  SU-
  XA-
  U-
  -  -  U R                  " XA-
  X$U-
  U-
  XIU40 UD6-  $ U R                  " U/U/U/S.SU/0XV40 UD6$ )Nc                     [        U 5      S:  $ )NgGz?)r   )r*   s    r/   r-   appellf1.<locals>.ok+  s    1v}r1   r   z%Analytic continuation not implementedm+nr   r+   r  )r   r   r?   appellf1hyper2d)
r   r`   r   r   rb   r*   yrV   r-   u1s
             r/   r  r  $  s    1vA1B {{1~~	R	RR|b"
 !uu#!Bb66 !HIIaCB3<1B/QSbDGA<V<= =;;qcrdt4uaSk1Q&QQr1   c                 D    U R                   " U/U/U/S.U/U/S.Xg40 UD6$ )Nr  r   r+   r  )	r   r`   r   r   c1c2r*   r  rV   s	            r/   appellf2r  A  s:     ;;qcrdt4TrdQ,$*, ,r1   c                 >   U R                  U5      =(       d    U R                  U5      n	U R                  U5      =(       d    U R                  U5      n
U	(       d(  U
(       d  [        U5      [        U5      :  a	  XvpvX!XC4u  pp4U R                  " X/X$/S.SU/0Xg40 UD6$ )Nr  r  )r   r   r  )r   r   r   r   r   rb   r*   r  rV   outer_polynomialinner_polynomials              r/   appellf3r  G  s    {{29#++b/{{29#++b/s1vAq+KB";;RG05!+aKFKKr1   c                 <    U R                   " SX/0U/U/S.XV40 UD6$ )Nr  r  r  )r   r`   ra   r  r  r*   r  rV   s           r/   appellf4r  Q  s+     ;;qe}B4RD&9!GGGr1   c                   ^  T R                  U5      nT R                  U5      nU 4S jn[        U5      n[        U5      nU" US5      n	U" US5      n
U" US5      nU" US5      nU" US5      nU" US5      nU" US5      nU" US	5      nU" US5      nU" US5      nU" US5      nU(       a  [        S
UR                  5       S   -  5      eU(       a  [        S
UR                  5       S   -  5      eSnT R                  nT R                  S5      nSnT R                  nUR                  SSU-  5      n T =R                  S-  sl        T R                  7n SnSn[        U
5      n[        U5      nU	 Vs/ s H  oU-   PM	     nnU Vs/ s H  o"U-   PM	     n nU H*  nUU-   nUR                  U5        UR                  U5        M,     U H*  nUU-   nUR                  U5        U R                  U5        M,     U H.  nUR                  UU-
  5        U R                  UU-
  S-
  5        M0     U H<  nUS-  nUSU-  -  nUR                  SU-
  U-
  5        UR                  U* U-
  5        M>     U H=  nUR                  USU-  -   5        UR                  USU-  -   SU-   SU-  -   -  5        M?     U HE  nUS-  nUR                  SU-
  SU-  -
  5        UR                  USU-  -   SU-   SU-  -   -  5        MG     U HP  nUS-  nUR                  SUU-
  -  5        UR                  SUU-
  S-   -  5        U R                  UU-
  S-
  5        MR     T R                  " UUUU-  4ST R                  0UD6n!UU!-  U-  n"[        U"5      U:  a  US-  nOSnUS:  d  U(       d  OHUU"-  nU H  nUU-  nM
     U  H  nUU-  nM
     US-  nUU-  U-  nUU:  a  T R                  S5      eGM  UT l        U7$ s  snf s  snf ! UT l        f = f)a  
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                    > U R                  U/ 5      n [        U5      nU Vs/ s H  nTR                  U5      PM     sn$ ! [         a    U/n N1f = fs  snf r   )popr"  	TypeErrorrr   )dctkeyr#  rE  r   s       r/   parsehyper2d.<locals>.parse  s[    wwsB	:D -11DSC D11  	6D	1s   A AAAr   r+   r  zm-nzn-mz2m+nz2m-nz2n-mzunsupported key: %rr   r<  r;   r7   r   r   r   r   rj  r5   rp   zmaxterms exceeded in hyper2d)rr   dictr?   keysrD   r   r   r=   r   r"  r   rI   r   r   )#r   r`   ra   r*   r  rV   r  r    r!   a_ma_n	a_m_add_n	a_m_sub_n	a_n_sub_m
a_2m_add_n
a_2m_sub_n
a_2n_sub_mb_mb_n	b_m_add_nrG  outerr   ok_countr   r<  r   
inner_sign
outer_signinner_ainner_bouter_aouter_binnerr   s#   `                                  r/   r  r  V  s6   P 	AAAA2 q'C
q'C
3-C
3-CaIaIaIq&!Jq&!Jq&!J
3-C
3-CaI
01668A;>?
?
01668A;>?
?	AGGE
AH88Dzz*bg.H>BwwhJJ3iG3iG$'(CqsCG($'(CqsCG(aCq!q! 
 aCq!q! 
 qs#qs1u%  r"
rQi'
qs1u%r!t$	   q1u%!A#!AaC01    r"
qs1Q3w'!A#!AaC01  
  a
sAaCy)sAaCE{+qs1u%	  
 IIgw
1 --%+-E5=:-D4y3A1}EIAeqjeWeqjeWFAAIME8|''(FGGs v 2Io )(j s,   2AO> 3O4O> O9IO> 4
O> >	Pc                    ^^^	 U R                  T5      mX-   n[        U5      m	[        U5      nT	U4S:X  d  T	U4S:X  a  U R                  T-  $ T	U-
  S-  mUU	U4S jnU R                  " Xu40 UD6$ )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

)r   r   )r   r   r   c                    > [        U S T 5      n[        U TS  5      nU Vs/ s H  nSU-
  PM
     nnU Vs/ s H  nSU-
  PM
     nnST-  T-  /U Vs/ s H  nSU-
  PM
     sn-   U Vs/ s H  nSU-
  PM
     sn-   nS/S/[        U5      -  -   S/[        U5      -  -   n/ / / / US/-   UT4n	Xx/ / US/-   UST-  T-  4n
X4$ s  snf s  snf s  snf s  snf )Nr   r   r   )r"  rF   )r   r    r!   ra   aa_sr`   bb_srprcr   r   negr   r"   s              r/   r]   bihyper.<locals>.h{  s   3r7m3qr7m !S!S! !S!S!Ci!m_S1S!S11#4F#QQqS#4FFTQCCL B4C=0RSA3YQ.RTQCZSy1}<v "!14Fs   CC	C+C)rr   rF   r<   rl   )
r   r    r!   r"   rV   r   r   r]   r  r   s
      `    @@r/   bihyperr  D  sw    ` 	AA
)CCACA	1v1a&E/xx!|Q3!)C	 ==*6**r1   )r   N)#libmp.backendr   	functionsr   r   r0   r@   rl   rI   r   r   r   r   r   r   r   r   ry   ru   rw   r   rz   r~   r   r{   rx   r|   r}   r  r  r  r  r  r  r  r   r1   r/   <module>r     sl   " +-2^ $&D E EN (8 (8T ( ( ) ) . . + + 1 1 4 4 * * 4 4   !8 !8F ! !F4l M M^ G/ G/R ; ;| @] @]H MQ MQb Oi Oib 2 2( ;+ ;+z R R8 , ,
 L L H H d dL @+ @+r1   