+
    i                        R t ^ RIt^ RIt^RIHtHtHtHtHt ^RI	H
t
 ^RIHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0 ^RI1H2t2H3t3H4t4H5t5H6t6H7t7H8t8H-t-H9t9 ^RI:H;t;H<t<H=t=H>t>H?t?H@t@HAtAHBtBHCtCHDtDHEtEHFtFHGtGHHtHHItIHJtJHKtKHLtLHMtMHNtN ^RI	HOtO ^RIPHQtQHRtRHStS  ! R	 R
]T4      tU R tV]R8X  d   R tV]3R ltWR tX]3R ltYR tZR t[R t\R t]]R3R lt^]R3R lt_]3R lt`]3R lta]R3R ltbR,R ltcR,R ltd]^3R lte]3R ltf]3R ltg]3R  lth]3R! lti]3R" ltj]3R# ltk]3R$ ltl]3R% ltm]3R& ltn]3R' lto]3R( ltp]3R) ltq]3R* ltr]3R+ ltsR# )-z
This module implements computation of hypergeometric and related
functions. In particular, it provides code for generic summation
of hypergeometric series. Optimized versions for various special
cases are also provided.
N)MPZ_ZEROMPZ_ONEBACKENDxrangeexec_)gcd)%ComplexResult
round_fastround_nearestnegative_rndbitcountto_fixedfrom_man_expfrom_intto_intfrom_rationalfzerofonefnoneftwofinffninffnanmpf_signmpf_addmpf_absmpf_posmpf_cmpmpf_ltmpf_lempf_gtmpf_min_maxmpf_perturbmpf_neg	mpf_shiftmpf_submpf_mulmpf_div
sqrt_fixedmpf_sqrtmpf_rdiv_intmpf_pow_intto_rational)	mpf_pimpf_expmpf_logpi_fixedmpf_cos_sinmpf_cosmpf_sinr)   	agm_fixed)mpc_onempc_submpc_mul_mpfmpc_mulmpc_negcomplex_int_powmpc_divmpc_add_mpfmpc_sub_mpfmpc_logmpc_addmpc_pos	mpc_shiftmpc_is_infnanmpc_zerompc_sqrtmpc_absmpc_mpf_div
mpc_squarempc_exp)ifac)mpf_gamma_int	mpf_eulereuler_fixedc                       ] tR t^+tRtR# )NoConvergence N)__name__
__module____qualname____firstlineno____static_attributes__rO       u/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/mpmath/libmp/libhyper.pyrN   rN   +   s    rU   rN   c                   V w  rr4RP                  V4      pRWVRV WQR V3,          pRV9   pVR8H  pT;'       g    Tp	. p
V
P                  p. p. p. p. p. p. p. p. pV! R4       V! R4       V! R4       V! R4       V	'       d	   V! R	4       V'       d"   V! R
4       V! R4       V! R4       V! R4       MV! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V'       d)   V! R4       V! R4       V! R4       V! R4       V! R4       \        V4       EF  w  ppRR.VV8  ,          pVR8X  d1   W.VV8  ,          P                  V4       V! RVVV3,          4       KL  VR8X  d3   W.VV8  ,          P                  V4       V! RVVVVV3,          4       K  VR8X  dq   VV.VV8  ,          P                  V4       V! RV,          4       V! R4       V! R4       V! R4       V! RVV3,          4       V! R4       V! R VV3,          4       K  VR8X  d   VV.VV8  ,          P                  V4       V! R!V,          4       V! R"4       V! R4       V! R#4       V! R4       V! R4       V! R4       V! R$VV3,          4       V! R4       V! R%VV3,          4       V! R4       V! R4       V! R&VV3,          4       V! R4       V! R'VV3,          4       EK  \        h	  \	        V4      p\	        V4      p\        VV4      pVVR pVVR pV! R(4       V! R)4       V! R*4       V	'       d	   V! R+4       V! R,4       R-P                  V Uu. uF  pR.P                  R/\        V4      4      NK   	  upV Uu. uF  pR0P                  R/\        V4      4      NK   	  up,           V Uu. uF  pR1P                  R/\        V4      4      NK   	  up,           4      pR-P                  V Uu. uF  pR2P                  R/\        V4      4      NK   	  upV Uu. uF  pR3P                  R/\        V4      4      NK   	  up,           V Uu. uF  pR4P                  R/\        V4      4      NK   	  up,           R5.,           4      pV'       d   V! R6V,           4       V! R7V,           4       V! R84       V'       d   V! R94       V! R:4       V! R;4       V	'       Ed_   \        V4       F"  pV! R<VV,          VV,          3,          4       K$  	  V F$  pV! R=P                  R/\        V4      4      4       K&  	  V F$  pV! R>P                  R/\        V4      4      4       K&  	  \        V4       F"  pV! R?VV,          VV,          3,          4       K$  	  V F$  pV! R@P                  R/\        V4      4      4       K&  	  V F$  pV! RAP                  R/\        V4      4      4       K&  	  V'       d3   V'       d   V! RB4       V! RC4       V! RD4       MBV! RE4       V! RF4       M1V'       d   V! RG4       V! RC4       V! RD4       MV! RH4       V! RI4       V F4  pV! RJP                  R/\        V4      4      4       V! RC4       V! RD4       K6  	  V F  pV! RKP                  R/\        V4      4      4       V! RLP                  R/\        V4      4      4       V! RMP                  R/\        V4      4      4       V! RNP                  R/\        V4      4      4       V! ROP                  R/\        V4      4      4       K  	  M\        V4       F"  pV! R<VV,          VV,          3,          4       K$  	  V F$  pV! R=P                  R/\        V4      4      4       K&  	  V F$  pV! R>P                  R/\        V4      4      4       K&  	  V'       d
   V! RP4       MV! RH4       V	'       d"   V! RQ4       V! RR4       V! RS4       V! RT4       MV! RQ4       V! RU4       V! RT4       V! RV4       V! RW4       V F$  pV! RXP                  R/\        V4      4      4       K&  	  V F$  pV! RYP                  R/\        V4      4      4       K&  	  V F$  pV! RZP                  R/\        V4      4      4       K&  	  V F$  pV! R[P                  R/\        V4      4      4       K&  	  V F$  pV! R\P                  R/\        V4      4      4       K&  	  V F$  pV! R]P                  R/\        V4      4      4       K&  	  V F$  pV! R^P                  R/\        V4      4      4       K&  	  V F$  pV! R_P                  R/\        V4      4      4       K&  	  V	'       db   V! R`4       V! Ra4       V! Rb4       V! Rc4       V! Rd4       V! Re4       V! Rf4       V! Rg4       V! Rh4       V! R4       V! Ri4       V! Rj4       M0V! R`4       V! Rb4       V! Rk4       V! R4       V! Ri4       V! Rl4       RmP                  Rn V
 4       4      p
RoV,          V
,           p
/ p\        V
\        4       V4       V
VV,          3# u upi u upi u upi u upi u upi u upi )pz
Returns a function that sums a generalized hypergeometric series,
for given parameter types (integer, rational, real, complex).

 zhypsum_%i_%i_%s_%s_%sNCz$MAX = kwargs.get('maxterms', wp*100)zHIGH = MPZ_ONE<<epsshiftzLOW = -HIGHz!SRE = PRE = one = (MPZ_ONE << wp)zSIM = PIM = MPZ_ZEROzxsign, xm, xe, xbc = z[0]zif xsign: xm = -xmzysign, ym, ye, ybc = z[1]zif ysign: ym = -ymzxsign, xm, xe, xbc = zzoffset = xe + wpzif offset >= 0:z    ZRE = xm << offsetzelse:z    ZRE = xm >> (-offset)zoffset = ye + wpz    ZIM = ym << offsetz    ZIM = ym >> (-offset)ABZz%sINT_%i = coeffs[%i]Qz!%sP_%i, %sQ_%i = coeffs[%i]._mpq_Rz%xsign, xm, xe, xbc = coeffs[%i]._mpf_z    %sREAL_%i = xm << offsetz    %sREAL_%i = xm >> (-offset)z__re, __im = coeffs[%i]._mpc_zxsign, xm, xe, xbc = __rezysign, ym, ye, ybc = __imz    %sCRE_%i = xm << offsetz    %sCRE_%i = xm >> (-offset)z    %sCIM_%i = ym << offsetz    %sCIM_%i = ym >> (-offset)zfor n in xrange(1,10**8):z    if n in magnitude_check:z"        p_mag = bitcount(abs(PRE))z.        p_mag = max(p_mag, bitcount(abs(PIM)))z%        magnitude_check[n] = wp-p_magz * zAINT_##zAP_#zBQ_#zBINT_#zBP_#zAQ_#nz
    mul = z
    div = z    if not div:z        if not mul:z            breakz        raise ZeroDivisionErrorz$    PRE = PRE * AREAL_%i // BREAL_%iz    PRE = (PRE * AREAL_#) >> wpz     PRE = (PRE << wp) // BREAL_#z$    PIM = PIM * AREAL_%i // BREAL_%iz    PIM = (PIM * AREAL_#) >> wpz     PIM = (PIM << wp) // BREAL_#zI    PRE, PIM = (mul*(PRE*ZRE-PIM*ZIM))//div, (mul*(PIM*ZRE+PRE*ZIM))//divz    PRE >>= wpz    PIM >>= wpz*    PRE = ((mul * PRE * ZRE) >> wp) // divz*    PIM = ((mul * PIM * ZRE) >> wp) // divz=    PRE, PIM = (PRE*ZRE-PIM*ZIM)//div, (PIM*ZRE+PRE*ZIM)//divz$    PRE = ((PRE * ZRE) >> wp) // divz$    PIM = ((PIM * ZRE) >> wp) // divz;    PRE, PIM = PRE*ACRE_#-PIM*ACIM_#, PIM*ACRE_#+PRE*ACIM_#z%    mag = BCRE_#*BCRE_#+BCIM_#*BCIM_#z     re = PRE*BCRE_# + PIM*BCIM_#z     im = PIM*BCRE_# - PRE*BCIM_#z    PRE = (re << wp) // magz    PIM = (im << wp) // magz*    PRE = ((PRE * mul * ZRE) >> wp) // divz    SRE += PREz    SIM += PIMz1    if (HIGH > PRE > LOW) and (HIGH > PIM > LOW):z        breakz    if HIGH > PRE > LOW:z    if n > MAX:zc        raise NoConvergence('Hypergeometric series converges too slowly. Try increasing maxterms.')z    AINT_# += 1z    BINT_# += 1z    AP_# += AQ_#z    BP_# += BQ_#z    AREAL_# += onez    BREAL_# += onez    ACRE_# += onez    BCRE_# += onez%a = from_man_exp(SRE, -wp, prec, 'n')z%b = from_man_exp(SIM, -wp, prec, 'n')zif SRE:z    if SIM:z(        magn = max(a[2]+a[3], b[2]+b[3])z	    else:z        magn = a[2]+a[3]z	elif SIM:z    magn = b[2]+b[3]z    magn = -wp+1zreturn (a, b), True, magnz    magn = a[2]+a[3]zreturn a, False, magn
c              3   4   "   T F  pR V,           x  K  	  R# 5i)z    NrO   ).0lines   & rV   	<genexpr>$make_hyp_summator.<locals>.<genexpr>+  s     :646s   zBdef %s(coeffs, z, prec, wp, epsshift, magnitude_check, **kwargs):
)joinappend	enumerate
ValueErrorlenminreplacestrranger   globals) keypqparam_typesztypepstringfnamehave_complex_paramhave_complex_arghave_complexsourceaddaintaratbintbratarealbrealacomplexbcomplexiflagWl_areall_brealcancellable_realnoncancellable_real_numnoncancellable_real_den
multiplierdivisork	namespaces    &                               rV   make_hyp_summatorr   @   s
     #A+ggk"G#qWRa['"+u&MME +|%99)9LF
--CDDDDEEHH ./"# +,"#'( !'( !$% ! !L#$$%G'([)4#JqAv3;[a ((+'1a)34S[[a ((+3q!Q1oEFS[E]16"**1-7!;<$%"#!".!Q78L1QF:;S[x a(003/!34+,$%+,$%"#!"-A67L0Aq69:"#!"-A67L0Aq69:I *L %jG%jG7G,#$4$56#$4$56 #$&',-<=/0 DIDqX--c3q6:DIBFG$QV^^CQ8$GHBFG$QV^^CQ8$GH IJ DIDqX--c3q6:DIBFG$QV^^CQ8$GHBFG$QV^^CQ8$GHKN%P QG L:%&w !" )* |
 '(A#.TX]^_X`bghibjWk.k*l((A#.O.W.WX[]`ab]c.d*e((A#.P.X.XY\^abc^d.e*f('(A#.TX]^_X`bghibjWk.k*l((A#.O.W.WX[]`ab]c.d*e((A#.P.X.XY\^abc^d.e*f(_`$%$%@A@AST$%$%:;:;AMUUVY[^_`[abc ! ! 
 A7??SVLM2::3AGH2::3AGH-55c3q6BC-55c3q6BC  '(A#.TX]^_X`bghibjWk.k*l((A#.O.W.WX[]`ab]c.d*e((A#.P.X.XY\^abc^d.e*f(<=67 ?@O&'O
 mn s,44S#a&ABTs,44S#a&ABTs-55c3q6BCTs-55c3q6BCTs/77SVDEUs/77SVDEUs.66sCFCDXs.66sCFCDX3434IM67K&'K"#G'(34I"#G#$YY:6::FSV[[_eeFI	&')Y' 9U###E JGGIGGs$   "$i&$i+
<$i0
<$i5&$i:
$i?
sagec                B   aaaaa ^ RI Ho V w  ooooVVVVV3R lpRV3# )z
Returns a function that sums a generalized hypergeometric series,
for given parameter types (integer, rational, real, complex).
)hypsum_internalc                 "   < S! SS
S	SWW#WEV4      # NrO   )coeffszprecwpepsshiftmagnitude_checkkwargsr   rr   rt   rs   ru   s   &&&&&&,rV   _hypsum"make_hyp_summator.<locals>._hypsum?  s!    "1aeV(V= =rU   z(none))sage.libs.mpmath.ext_mainr   )rq   r   r   rr   rt   rs   ru   s   & @@@@@rV   r   r   8  s-    
 	>#& 1k5	= 	=   rU   c                    V w  r4rVV'       g:   V \         8X  d   \         # V \        8X  d   \        # V \        8X  d   \        # \
        # WV,           p\        P                  pV^8  dN   ^V^,
          ,          R,           V! V^4      8  d+   V'       d   \        \        ^ W4      # \        \        ^W4      # Wq) 8  d<   \        V ^4      p \        \        V^,           4      V^,           4      p	\        W	W4      # V\        V4      ,           ^,           p
\        \        W
4      4      pW,          V
,	          pTR^rpV'       dY   W,          V
,	          V,          pV^V,          ^,           ,          pV^,          '       d
   W,          pMW,          pV^,          pK`  W^,           ,          \        \!        V
4      V
4      ,          pV'       d   V) p\#        W) W4      # )   gW?i90  )r   r   r   r   r   r   mathlogr"   r$   r)   r-   r'   absr   r(   r0   r   )xr   rndsignmanexpbcsizelgcr   tt2stermr   s   &&&             rV   mpf_erfr   O  sm   Ds:e|9Tku9Ul8D	BaxAtAvJ)BtAJ6ua33tQ22e|aNVDG_d2g.qT''	D		B	BHQOA
#"BE1QA
f^!QqSU|q55IAIA	Q	
!tHRL"55AB3**rU   c                 J    \        V 4      pV^,          R,          V8  d   R# R# )   
ףp=
?TF)r   )r   r   r`   s   && rV   erfc_check_seriesr   |  s!    q	A!td{TrU   c                 F   V w  r4rVV'       g:   V \         8X  d   \        # V \        8X  d   \         # V \        8X  d   \        # \
        # V^,           pWe,           pV\        ^ ^V,          4      ,          pT;'       g    V^8  p	V	'       g   \        W4      '       g   V	'       d.   \        \        \        W^
,           \        V,          4      W4      # \        V 4      ^,           p
\        \        \        W\        V
^,          R,          4      ,           ^
,           4      W4      # \        V,          ;r^ p^\        W4      ^,          ,          V,	          p^p V^V,          ^,
          ,          V,          V,          pV^8  d   W8  g	   V'       g   M-V^,          '       d
   W,          pMW,          pTpV^,          pKi  W,          \        \!        V4      V4      ,          p\#        W) V4      p\%        \'        \)        W V4      V4      V4      p\+        \)        VW4      WV4      pV# )   r   )r   r   r   r   r   r   maxr   r%   r   r   r   intr   r   r(   r0   r   r.   r#   r&   r'   )r   r   r   r   r   r   r   r   magregular_erfr`   r   r   	term_prevr   r   r   ys   &&&               rV   mpf_erfcr     s   Ds:d{9Ul:d{	B
&C#a3-B//#'K+A224G\#5F!GSS1IaKtWQs1a49~(=(BCTOO"}AI	
Xa_!	!b(A	A
1q!b(Q.q5T%Tq55IAIA		Q	
Zb11AQR AB+B/A1!1C0AHrU   c                     T ;r#^pV'       d1   W0,          V,	          V,          pW#V,          ,          pV^,          pK8  V# r   rO   )r   r   r   r   r   s   &&   rV   	ei_taylorr     s:    IA	A
cd]q 	!V	QHrU   c                 4   \         pT ;rET;rg^pV! V4      V! V4      ,           ^8  do   WP,          Wq,          ,
          V,          V,	          WQ,          Wp,          ,           V,          V,	          ruWEV,          ,          pWgV,          ,          pV^,          pK  WF3# r   )r   )	zrezimr   _abssretresimtimr   s	   &&&      rV   complex_ei_taylorr     s    DOCOC	A
s)d3i
!
#WSW_q(4/3737?Q2F1MSaxax	Q8OrU   c                     \         V,          pW!,          V ,          ;rW ,           p^pV'       d*   WS,          V ,          V,	          pWC,          pV^,          pK1  V# r   )r   )r   r   oner   r   r   s   &&    rV   ei_asymptoticr     sM    
T/Cka AA	A
SUtO		QHrU   c                    \         p\        V,          pW,          W ,          ,           V,	          pW,          V,          ;rgV) V,          V,          ;rWF,           p
Tp^pV! V4      V! V	4      ,           R8  dm   Wv,          W,          ,
          V,          V,	          Wx,          W,          ,           V,          V,	          rW,          p
W,          pV^,          pW8  g   K  \        hW3# )r   i  )r   r   rN   )r   r   r   r   r   Mxrer   ximr   r   r   r   s   &&&          rV   complex_ei_asymptoticr     s    D
T/C	37	t#A""C$4A%%C
)C
C	A
s)d3i
$
&WSW_a'$.#'#'/11Dt0KS

	Q88OrU   Fc                 v   V'       d   \        V 4      p V w  rErgV'       d%   V'       g   V \        8X  d   \        # \        R 4      hV'       Ed   ^ WVV3pWg,           p	V^,           p
W8  pV'       g6   V^ 8  d
   WV,          pM	WV) ,	          pV\	        V
R,          4      ^
,           8  pV'       dQ   W8  d   \
        pM \        \        \        W
4      V
4      V
) 4      p\        V\        W
4      V
4      p\        WW4      pMV
^\	        \        V4      4      ,          ,          p
\        W
4      p\        W4      \        V
4      ,           p\        W) 4      p\        W4      p\!        VVW4      pM<V \        8X  d   \"        pM*V \        8X  d   \        pMV \"        8X  d   \        pM\$        pV'       d   \        V4      pV# )zE1(x) for x < 0V-?)r#   r   r   r   r   r   r   r   r   r&   r.   r'   r   r   rL   r/   r   r   r   )r   r   r   e1r   r   r   r   xabsxmagr   can_use_asympxabsintvut1r   s   &&&&             rV   mpf_eir     s`   	AJDs	$:K-..
s#BvBY	ax*$-#c"U(mb&88My x!CbSI71>2.Ad(A!Ct%%%BA! ;r?2Aa$B!BB*A:5q$YD%ZUa	AJHrU   c           
         V'       d   \        V 4      p V w  rEVw  rgrVw  rrV\        8X  dX   V'       d>   \        \        WAV4      4      pV'       g   \        \	        W4      4      pW3# \        pW3# \        WAV4      \        3# V\        8w  d   V'       d	   V'       g   \
        \
        3# V^(,           pW,           pW,           p\        VV4      pVV8  pV'       gJ   \        \        V4      4      \        \        V4      4      ,           pV\        VR,          4      ^,           8  p V'       d   VV8  d   \        \        3pMB\        VV4      p\        VV4      p\        VVV4      w  pp\        VV) 4      \        VV) 4      3p\        V\        V V4      V4      p\!        VV V4      pV'       d   \        VW4      pV# Vw  rV
'       d%   \#        WV4      \%        V\	        V4      W4      3pV# \#        WV4      \'        V\	        V4      W4      3pV#  V^\        \        \+        V ^4      4      4      ,          ,          p\        VV4      p\        VV4      p\-        VVV4      w  ppV\/        V4      ,          p\        VV) 4      \        VV) 4      3pV'       d   \1        \        V 4      V4      pM\1        V V4      p\3        VVW4      pV'       d   \        V4      pV#   \(         d     Li ; i)(   r   )r9   r   r#   r   r-   r   r   r   r   r   r   r   r   r   r8   rH   r;   r   r%   r   rN   rE   r   rL   r>   r?   )r   r   r   r   abasignamanaexpabcbsignbmanbexpbbcr   r   r   amagbmagzmagr   zabsintr   r   r   vrevimr   s   &&&&                        rV   mpc_eir     s   	AJDAEEEzq,-AF4-. 4K 4K!3'..Ez4$<	B8D8DtT?D2IMfQi.3vay>1#bh-""44by%Kq"oq"o0c2>S rc*Lrc,BB71b>2.A1b!AAt) H -wq&*d/PPA H  -wq&*d/PPAH% , !Cwq!}%&
&&B
1b/C
1b/C c2.HC;r?CS"|C44A	GAJr"AbM1d A	AJH!  s%   'K  /BK  ?/K  /#K   K.-K.c                     \        WVR 4      # T)r   r   r   r   s   &&&rV   mpf_e1r   O      !3%%rU   c                     \        WVR 4      # r   )r   r   s   &&&rV   mpc_e1r   R  r   rU   c           
        Vw  rVrxV'       g   V'       dH   V\         8X  d   V ^ 8:  d	   \        R3# \        WV4      R3# V\        8X  d	   \         R3# \        \        3# V\         8X  d&   V ^8  d   \	        ^V ^,
          W#4      R3# \        R3# V\        8X  d	   \         R3# \        \        3# T p	V'       d
   ^V ,
          p V^,           p
Wx,           pVR8  d   \
        h\        \        V 4      4      pV ^ 8  ;'       d    Tp\        V4      pV ^ 8X  g   ^V,          V,
          V
) 8  dM   V'       d,   \        W4      p\        V\        W^,
          V
4      W#4      pEM\        W4      p\        WW#4      pEMyRV
,          T u;8  ;'       d    ^ 8*  Mu pV'       g   \        \        V4      4      p\        \        ^VV ,
          4      ^V
,          4      pV ) V,          VV ,           \        \        VV ,           4      4      ,          ,           VV,          ,
          ^V,          ^d,          ,
          pV
) ^
,
          pVV8  pV'       d   \         ) W,           ,          \#        W4      ,          pT pVV,          p\         V
,          pV'       d4   V'       d,   VV,          pV^,          pVV,          V,          V
,	          pK;  \        W4      pV'       d    \        V\        W^,
          V
4      V
4      pM\        WV
4      p\        V\%        VV
) 4      W#4      pEMV ^8X  d   \        \'        WV4      4      pEMV ^ 8  Ed   V ^V
,          8  Ed   \        \'        W4      4      pV'       d   V	^,          '       d   \        V4      pM\        V\        W^,
          V
4      V
4      p\#        W4      ;pp^.V ^,
          ,          p\)        ^V ^,
          4       F  pVV^,
          ,          V,          VV&   K  	  VRRR1,          pV^ ,          V
,          p\)        ^V ^,
          4       FQ  pV^,          '       d   VVV,          V,          ,          pMVVV,          V,          ,          pVV,          V
,	          pKS  	  \%        VV
) V
4      p\        V\        W4      4      pV'       d   \        V\        WV
4      V
4      p\+        VV4      p\        V\-        \/        V ^,
          4      4      W#4      pM\
        hV'       d   \-        \/        V ^,
          4      ) 4      pV'       d5   \        \1        V
4      VW#4      pV	^,          '       d   \        V4      pVV3# \        \        \1        V
4      \        W^,
          V
4      V
4      VW#4      pVV3# VR3# )z
E_n(x), n an integer, x real

With gamma=True, computes Gamma(n,x)   (upper incomplete gamma function)

Returns (real, None) if real, otherwise (real, imag)
The imaginary part is an optional branch cut term

Ni)r   r   rJ   r   r   NotImplementedErrorr   r   r#   r.   r&   r+   r'   r   rl   r   r   r   r   r   ro   r   r   rI   r-   ) r`   r   r   r   gammar   r   r   r   n_origr   r   nmag	have_imagnegxr   recan_use_asymptotic_seriesximsiztolrr   r   T1facsr   T2r^   r   ims    &&&&&                           rV   
mpf_expintr  U  s    DsEz6:%$Qc2D88Dyd{":Ezq5(AaC;TAA:%Dyd{":FaC	B8Dcz!!CFDA$I1:DAv4$"$!AK!8R8$DB!At)B %'rEANNN!(VAYBC2a4L!B$'A"T'QqS(3qs8"444qv=QLC#b&C(+c	%$(&8A?:AA!A2AQQqSUrM!AA{1Qh;R@ A"%LRC0$<B!VC01BUq1R4x)*BA:: BRTQ3!;R@QO#A3!A#;D1QqS\qs)a-Q "":DQ2A1ac]q55a1$Aa1$AqSRK # a"b)BWT./BRQ!;R@BAHT!A#Y/;B%%d1Q3iZ Q2BzzR[ 2v [ax-LbQSTVZ`B2v4xrU   c                   \        W4      p W ,          ) V,	          pV^ 8X  d   ^ \        V,          ^repMY ^repV'       d>   WS,          Wf^,
          ,          ,          V,	          pWEV,          ,          pV^,          pKE  \        WA) 4      # )z&
0 - Ci(x) - (euler+log(x))
1 - Si(x)
)r   r   r   )r   r   whichx2r   r   r   s   &&&    rV   mpf_ci_si_taylorr    su    
 	A32BzgrkAaaa
TAsG_r!	T		Q3rU   c                    V ^,          '       d   V ^,          V ^,          ,           pM&V^,          '       d   V^,          V^,          ,           pV^,          '       d"   \        XV^,          V^,          ,           4      pX^8  g   WB) 8  d   \        hV^V,
          ,          p\        W4      p\        W4      pWf,          WU,          ,
          V,	          pRV,          V,          V,	          pTp	Tp
\        V,          pV^ 8X  d   ^ ^ \        V,          ^ ^3w  rrpM	WVWV^3w  rrp\        \	        V	4      \	        V
4      4      ^8  d~   W^,
          ,          pW,          W,          ,
          V,          V,	          W,          W,          ,           V,          V,	          rWV,          ,          pWV,          ,          pV^,          pK  \        W) 4      \        W) 4      3# )   )r   r   r   r   r   r   )r  r  r   r  r   r   r   z2rez2imr   r   r   r   r   r   fs   &&&&            rV   mpc_ci_si_taylorr    s    
!uueBqEk	AeBqEk	!uu#r!uRU{#
Qw#)!!1S5MB
2
C
2
CGCGOb DsF3JD
C
C
2+Cz !1w{Q 9#A ##A 5#A
c#hC
!A
%sGXch&*R/38CH3Dq2H21MSAvAv	QS!<S#999rU   c           	        V^,           pV w  rVrxRRrV'       g   V \         8X  d   \        \         3# V \        8X  d   W 3# \         p	V^ 8w  dV   V \        8X  d   \	        \        W4      R4      p
V \        8X  d+   \        \	        \        V\        V,          4      R4      4      p
W3# Wx,           pW) 8  dR   V^ 8w  d   \        V ^V,
          W4      p
V^8w  d-   \        V4      p\        V 4      p\        V\        W4      W4      p	W3# W8  dh   V^ 8w  dA   V'       d"   \        \        V\        V,          4      4      p
M\        W4      p
\	        V
R4      p
V^8w  d   \        \        W4      WV4      p	W3# V\        V4      ,          pV^,
          \         P"                  ! V^4      8  pV'       gj   V^ 8w  d   \%        \'        W^4      W4      p
V^8w  dC   \'        W^ 4      p	\        V	\        V4      V4      p	\        V	\        \        V 4      V4      W4      p	W3# \        V 4      p \)        W4      p\*        ^V,          ,          V,          p\*        V,          pTpTp^pV'       dX   V) pVV,          V,          V,	          pV^,          pVV,          pVV,          V,          V,	          pV^,          pVV,          pK_  \-        VV) 4      p\-        VV) 4      p\        VW4      p\        VW4      p\/        W4      w  ppV^ 8w  d`   \        \1        VV4      \1        VV4      V4      p
\3        \	        \        V4      R4      W4      p
V'       d   \        V
4      p
\%        WV4      p
V^8w  d"   \3        \1        VV4      \1        VV4      W4      p	W3# )z
Calculation of Ci(x), Si(x) for real x.

which = 0 -- returns (Ci(x), -)
which = 1 -- returns (Si(x), -)
which = 2 -- returns (Ci(x), Si(x))

Note: if x < 0, Ci(x) needs an additional imaginary term, pi*i.
Nr   )r   r   r   r   r$   r-   r#   r   r"   rK   r   r   r/   r'   r3   r   r   r   r   r  r   r   r   r1   r&   r%   )r   r   r   r  r   r   r   r   r   cisir   r   r   
asymptoticxfxrs1s2r   r   cossins   &&&&                   rV   	mpf_ci_sir$    s    
BDs4:5>!96MA:Dyvd0"5EzYvdL4E'FKLx
&C
SyA:Q$2BA:"A1:DGD-t9Bv	A:VD,s*;<=D&2r"BA:#6Bv
c#h Q"a(JA:)!3T?BA:!!+BYr]B/BWWQZ4d@Bv
A	!B
AbD/b	 B
R-B	B
A	A
BrT!VbL	Q
arT!VbL	Q
a	b2#	B	b2#	B	Q	B	Q	B1!HC zWS"%wsB'7<Yvbz2.7BRs#zWS"%wsB'7C6MrU   c                 V    \        V 4      ^ 8  d   \        h\        WV^ 4      ^ ,          #     )r   r   r$  r   s   &&&rV   mpf_cir(  X  s'    {QQc1%a((rU   c                 *    \        WV^4      ^,          # r  )r$  r   s   &&&rV   mpf_sir+  ]  s    Qc1%a((rU   c                     V w  r4V\         8X  d:   \        W1V^ 4      ^ ,          p\        V4      ^ 8  d   V\        W4      3# V\         3# V^,           p\	        W4V^ 4      w  rx\        V\        V4      V4      p\        Wx3\        W4      W4      pV# r&  )	r   r$  r   r-   r  r   rK   r?   r>   )	r   r   r   r  r  r  r   crecims	   &&&      rV   mpc_cir/  `  s    FB	U{ra(+B<!t)**E{	BA.HC
#y}b
)C	#WQ^T	7BIrU   c                     V w  r4V\         8X  d   \        W1V^4      ^,          \         3# V^,           p\        W4V^4      p \        WV4      # r*  )r   r$  r  r@   )r   r   r   r  r  r   s   &&&   rV   mpc_sir1  m  sM    FB	U{"C+A.66	BQ'A1C  rU   c                 |   V^2,          pV ^ 8  ;'       d
    V ^,          pV^,          V^,          ,           p\        V 4      p V^,           V \        V 4      ,          ,           pV^ 8  d   W`V,          ,          p\        W4      pV^,          V,	          pV '       g   \        V,          ;rM5W,          \	        V 4      ,          V ^,
          V,          V ,           ,	          ;r^p
V	'       d>   W,          RV
,          W,           ,          ,          V,	          p	W,          pV
^,          p
KE  V'       d   V) p\        W) W#4      # )2   )r   r   r   r   rI   r   )r`   r   r   roundingnegater   r   r  r   r   r   s   &&&&       rV   mpf_besseljnr7    s    BJDU__q1uF
A$qt)CAA	Qx{]	"B
Qw
#gA
Q$2B2AaqsBhl33	A
f"Q$*%",		QB3//rU   c                    V ^ 8  ;'       d
    V ^,          p\        V 4      p TpVw  rg\        V^,          V^,          ,           V^,          V^,          ,           4      pV^V \        V 4      ,          ,           \        V4      ,           ,          pV^ 8  d   W V,          ,          p\        Wb4      p\        Wr4      pV^,          V^,          ,
          V,	          p	Wg,          V^,
          ,	          p
V '       g   \        V,          ;r\
        ;rMm\        WgV 4      w  ppV\        V 4      ,          V ^,
          V,          V ,           ,	          ;rV\        V 4      ,          V ^,
          V,          V ,           ,	          ;r^p\        V4      \        V4      ,           ^8  d|   RV,          VV ,           ,          pW,          W,          ,
          W,          W,          ,           rVV,          V,	          pVV,          V,	          pW,          pW,          pV^,          pK  V'       d   V) pV) p\        W) WS4      p\        W) WS4      pVV3# )r'  r4  )	r   r   r   r   r   r   r:   rI   r   )r`   r   r   r5  r6  origprecr   r   r   r  r  r   r   r   r   r  r  r   rr   s   &&&&               rV   mpc_besseljnr:    s   U__q1uFAAHHC
c!fSVmSVCF]
+CB8A;S))D
QwC
3
C
3
CFS!VO$DGa DtO#c 1-B47]1d
Q7747]1d
Q77	A
c(SX

!qD!A#J8ch&38(;SaxD axD 

	Qdd	c5(	5B	c5(	5B8OrU   c                f   V w  rErgVw  rrV'       g	   V'       d   \        R4      hV'       d	   V	'       gg   V \        8X  g   V\        8X  d   \        # V \        8X  d   V\        8X  d   \        # \        # V\        8X  d   V \        8X  d   \        # \        # \        # V^,           pWg,           pW,           pW,
          p\	        V4      pV^
8  d`   V^
8  d7   \        \        WV4      R4      \        \        WV4      V4      rV^,          pK=  V w  rErgVw  rrWg,           pW,           pW,
          p\        W4      p\        W4      p^ pVR8  d   V) pM
V^8  d   V) pV'       d   \        V V4      p \        VV4      p\        W4      p\        W4      p\        VVV4      p\        VV) V,
          W#4      # )zR
Computes the arithmetic-geometric mean agm(a,b) for
nonnegative mpf values a, b.
zagm of a negative numberr   i)r   r   r   r   r   r$   r   r)   r&   rl   r   r   r4   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	mag_deltaabs_mag_deltamin_magmax_magr`   afbfgs   &&&&                   rV   mpf_agmrC    s   
 EE677T9T	K9EzK9EzK	B8D8DI	NMrb WQ_R0R, aM!"T!"TxxK	 $nG$nG	A|H	2HaOaO	!B	!B"b"AB3q5$,,rU   c                $    \        \        WV4      # )zP
Computes the arithmetic-geometric mean agm(1,a) for a nonnegative
mpf value a.
)rC  r   r   r   r   s   &&&rV   mpf_agm1rF    s    
 4#&&rU   c                6   \        V 4      '       g   \        V4      '       d   \        \        3# \        W39   d   \        \        3# \	        V 4      V8X  d   \        \        3# V^,           p\        \        V) ^
,           4      p \        \        WV4      R4      p\        \        WV4      V4      pYgr\        \        V ^
4      \        V^
4      .4      ^,          p\        \        W^
4      ^
4      p	V\        8X  g   \        V	\        WX4      4      '       g   K  V # )zj
Complex AGM.

TODO:
* check that convergence works as intended
* optimize
* select a nonarbitrary branch
r   )rB   r   rC   r   r9   r$   r   rA   r?   rD   r8   r!   rE   r6   r   r&   )
r   r   r   r   r   epsa1b1r   errs
   &&&&      rV   mpc_agmrL    s     Q=++TzA6e|qzQe|	bB
D2#b&
!C
wqR("-gaB',1GAbM71R=9:1=gaB',5=F3(:;;HrU   c                 $    \        \        WV4      # r   )rL  r5   rE  s   &&&rV   mpc_agm1rN  ,  s    7AS))rU   c                 ^   V ^,          '       g?   V \         8X  d   \        \        W4      R4      # V \        8X  d   \         # V \        8X  d   V # V \
        8X  d   \        # V^,           p\        \        \
        W4      V4      p\        WC4      p\        \        V4      WQV4      p\        VR4      # r  r   )r   r$   r-   r   r   r   r   r)   r%   rF  r'   )r   r   r   r   r   r   r	  s   &&&    rV   
mpf_ellipkrQ  /  s    Q44:VD.33:L9HDy 
B 	q%r*AAr
AS)AQrU   c                 2   V w  r4V\         8X  d:   V\        8X  d   \        # \        V\        4      '       d   \        W1V4      \         3# V^,           p\        \        \        W4      V4      p\        We4      p\        \        V4      WqV4      p\        VR4      # )   r   )r   r   rC   r   r   rQ  rD   r6   r5   rN  rF   r-   rA   )	r   r   r   r  r  r   r   r   r	  s	   &&&      rV   
mpc_ellipkrT  C  s    FB	U{:O"db,e33	B!("-AAF2J-AQrU   c                    V w  r4rVV'       gP   V \         8X  d   \        \        W4      R4      # V \        8X  d   \        # V \
        8X  d   V # V \        8X  d   \        hV \        8X  d   \        # V^,           pWV,           pW) 8  d   \        \        W4      R4      # \        V^ 4      V,
          p	\        \        V	4      p
\        V ^V,          4      p\        \        W
4      ^V,          4      p\        \        W4      V	) 4      p\        \        V 4      p\        V\        V ^4      V4      p\        V\        W4      W4      # rP  )r   r$   r-   r   r   r   r   r   r   rQ  r%   r&   r   )r   r   r   r   r   r   r   r   r   rr   hKKhKdiffr   r   s   &&&             rV   
mpf_elliperZ  P  s	    Ds:VD.33:K9H9Dy	bB
&C
Sy*B//CbA$A1adA	GAM1R4	(Bganqb)EaAy1~r*A1gamT//rU   c                 P   V w  r4V\         8X  d@   V\        8X  d   \         \        3# \        V\        4      '       d   \	        W1V4      \         3# V^,           p\        V ^4      p\        V^,          V^,          ,           ^ 4      V,
          p\        \        V4      p\        V ^V,          4      p	\        \        W^V,          4      ^V,          4      p
\        \        WV4      V) 4      p\        \        W4      p\        V\        V ^4      V4      p\        V\        WV4      W4      # )rS  )r   r   r   r   rZ  rE   r   r$   rT  r<   rA   r6   r5   r8   r?   )r   r   r   r  r  r   r   rr   rV  rW  rX  rY  r   r   s   &&&           rV   
mpc_elliper\  n  s    FB	U{:4= "db,e33	B
!Q-CCF3q6M1"A$A1adA	Kad+QrT	2BgbR(1"-EAy1~r*A1gaB'33rU   r&  )t__doc__operatorr   backendr   r   r   r   r   
libintmathr   libmpfr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   	libelefunr-   r.   r/   r0   r1   r2   r3   r4   libmpcr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   	gammazetarJ   rK   rL   	ExceptionrN   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r$  r(  r+  r/  r1  r7  r:  rC  rF  rL  rN  rQ  rT  rZ  r\  rO   rU   rV   <module>rf     s     > > 
 
 
 
 
 
 
 
 
 
  
       < <	I 		s$l f!. $ &+Z % %\
	( #u (T #u ?B # & # &  * tl ":> &Q [z # )
 # ) #  # !P '1 0. '1 "H ' 9-v % ' ' 4 % * ' ( '  ' 0< ' 4rU   