§
    JŠtj�  ã                   óÊ  — d Z ddlZddlZddlmZmZmZmZmZ ddl	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m-Z-m9Z9 ddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN dd	l	mOZO dd
lPmQZQmRZRmSZS  G d„ deT¦  «        ZU	 d„ ZVedk    rd„ ZVefd„ZWd„ ZXefd„ZYd„ ZZd„ Z[d„ Z\d„ Z]edfd„Z^edfd„Z_efd„Z`efd„Zaedfd„Zbd/d„Zcd/d„Zdedfd „Zeefd!„Zfefd"„Zgefd#„Zhefd$„Ziefd%„Zjefd&„Zkefd'„Zlefd(„Zmefd)„Znefd*„Zoefd+„Zpefd,„Zqefd-„Zrefd.„ZsdS )0zÝ
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                   ó   — e Zd ZdS )ÚNoConvergenceN)Ú__name__Ú
__module__Ú__qualname__© ó    úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/mpmath/libmp/libhyper.pyrP   rP   +   s   € € € € € Ø€DrU   rP   c           	      ó  — | \  }}}}d                      |¦  «        }d|||d|…         ||d…         |fz  }d|v }|dk    }|p|}	g }
|
j        }g }g }g }g }g }g }g }g } |d¦  «          |d¦  «          |d¦  «          |d¦  «         |	r |d	¦  «         |r- |d
¦  «          |d¦  «          |d¦  «          |d¦  «         n |d¦  «          |d¦  «          |d¦  «          |d¦  «          |d¦  «          |d¦  «          |d¦  «         |r7 |d¦  «          |d¦  «          |d¦  «          |d¦  «          |d¦  «         t          |¦  «        D �]õ\  }}ddg||k             }|dk    r3||g||k                                  |¦  «          |d|||fz  ¦  «         ŒM|dk    r5||g||k                                  |¦  «          |d|||||fz  ¦  «         Œˆ|dk    r}||g||k                                  |¦  «          |d|z  ¦  «          |d¦  «          |d¦  «          |d¦  «          |d||fz  ¦  «          |d¦  «          |d ||fz  ¦  «         �Œ|dk    rß||g||k                                  |¦  «          |d!|z  ¦  «          |d"¦  «          |d¦  «          |d#¦  «          |d¦  «          |d¦  «          |d¦  «          |d$||fz  ¦  «          |d¦  «          |d%||fz  ¦  «          |d¦  «          |d¦  «          |d&||fz  ¦  «          |d¦  «          |d'||fz  ¦  «         �Œðt          ‚t	          |¦  «        }t	          |¦  «        }t          ||¦  «        }||d…         }||d…         } |d(¦  «          |d)¦  «          |d*¦  «         |	r |d+¦  «          |d,¦  «         d-                      d.„ |D ¦   «         d/„ |D ¦   «         z   d0„ |D ¦   «         z   ¦  «        }d-                      d1„ |D ¦   «         d2„ |D ¦   «         z   d3„ |D ¦   «         z   d4gz   ¦  «        }|r |d5|z   ¦  «          |d6|z   ¦  «          |d7¦  «         |r |d8¦  «          |d9¦  «          |d:¦  «         |	�rÀt          |¦  «        D ]} |d;||         ||         fz  ¦  «         Œ|D ].} |d<                     d=t          |¦  «        ¦  «        ¦  «         Œ/|D ].} |d>                     d=t          |¦  «        ¦  «        ¦  «         Œ/t          |¦  «        D ]} |d?||         ||         fz  ¦  «         Œ|D ].} |d@                     d=t          |¦  «        ¦  «        ¦  «         Œ/|D ].} |dA                     d=t          |¦  «        ¦  «        ¦  «         Œ/|r;|r" |dB¦  «          |dC¦  «          |dD¦  «         nQ |dE¦  «          |dF¦  «         n:|r" |dG¦  «          |dC¦  «          |dD¦  «         n |dH¦  «          |dI¦  «         |D ]D} |dJ                     d=t          |¦  «        ¦  «        ¦  «          |dC¦  «          |dD¦  «         ŒE|D ]Þ} |dK                     d=t          |¦  «        ¦  «        ¦  «          |dL                     d=t          |¦  «        ¦  «        ¦  «          |dM                     d=t          |¦  «        ¦  «        ¦  «          |dN                     d=t          |¦  «        ¦  «        ¦  «          |dO                     d=t          |¦  «        ¦  «        ¦  «         Œßn©t          |¦  «        D ]} |d;||         ||         fz  ¦  «         Œ|D ].} |d<                     d=t          |¦  «        ¦  «        ¦  «         Œ/|D ].} |d>                     d=t          |¦  «        ¦  «        ¦  «         Œ/|r |dP¦  «         n |dH¦  «         |	r- |dQ¦  «          |dR¦  «          |dS¦  «          |dT¦  «         n! |dQ¦  «          |dU¦  «          |dT¦  «          |dV¦  «          |dW¦  «         |D ].} |dX                     d=t          |¦  «        ¦  «        ¦  «         Œ/|D ].} |dY                     d=t          |¦  «        ¦  «        ¦  «         Œ/|D ].} |dZ                     d=t          |¦  «        ¦  «        ¦  «         Œ/|D ].} |d[                     d=t          |¦  «        ¦  «        ¦  «         Œ/|D ].} |d\                     d=t          |¦  «        ¦  «        ¦  «         Œ/|D ].} |d]                     d=t          |¦  «        ¦  «        ¦  «         Œ/|D ].} |d^                     d=t          |¦  «        ¦  «        ¦  «         Œ/|D ].} |d_                     d=t          |¦  «        ¦  «        ¦  «         Œ/|	r… |d`¦  «          |da¦  «          |db¦  «          |dc¦  «          |dd¦  «          |de¦  «          |df¦  «          |dg¦  «          |dh¦  «          |d¦  «          |di¦  «          |dj¦  «         nB |d`¦  «          |db¦  «          |dk¦  «          |d¦  «          |di¦  «          |dl¦  «         dm                      dn„ |
D ¦   «         ¦  «        }
do|z  |
z   }
i }t          |
t          ¦   «         |¦  «         |
||         fS )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 * c                 óT   — g | ]%}d                       dt          |¦  «        ¦  «        ‘Œ&S )zAINT_#ú#©ÚreplaceÚstr©Ú.0Úis     rV   ú
<listcomp>z%make_hyp_summator.<locals>.<listcomp>±   ó.   € ÐIÐIÐI¸q˜X×-Ò-¨cµ3°q±6´6Ñ:Ô:ÐIÐIÐIrU   c                 óT   — g | ]%}d                       dt          |¦  «        ¦  «        ‘Œ&S )zAP_#r`   ra   rd   s     rV   rg   z%make_hyp_summator.<locals>.<listcomp>²   ó,   € ÐGÐGÐG¸Q˜VŸ^š^¨Cµ°Q±´Ñ8Ô8ÐGÐGÐGrU   c                 óT   — g | ]%}d                       dt          |¦  «        ¦  «        ‘Œ&S )zBQ_#r`   ra   rd   s     rV   rg   z%make_hyp_summator.<locals>.<listcomp>³   rj   rU   c                 óT   — g | ]%}d                       dt          |¦  «        ¦  «        ‘Œ&S )zBINT_#r`   ra   rd   s     rV   rg   z%make_hyp_summator.<locals>.<listcomp>µ   rh   rU   c                 óT   — g | ]%}d                       dt          |¦  «        ¦  «        ‘Œ&S )zBP_#r`   ra   rd   s     rV   rg   z%make_hyp_summator.<locals>.<listcomp>¶   rj   rU   c                 óT   — g | ]%}d                       dt          |¦  «        ¦  «        ‘Œ&S )zAQ_#r`   ra   rd   s     rV   rg   z%make_hyp_summator.<locals>.<listcomp>·   rj   rU   Ú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_#) >> wpr`   z     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   ó    K  — | ]	}d |z   V — Œ
dS )z    NrT   )re   Úlines     rV   ú	<genexpr>z$make_hyp_summator.<locals>.<genexpr>+  s&   è è € Ð:Ð:¨4˜ ™Ð:Ð:Ð:Ð:Ð:Ð:rU   zBdef %s(coeffs, z, prec, wp, epsshift, magnitude_check, **kwargs):
)ÚjoinÚappendÚ	enumerateÚ
ValueErrorÚlenÚminÚrangerb   rc   r   Ú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Úbcomplexrf   ÚflagÚWÚl_arealÚl_brealÚcancellable_realÚnoncancellable_real_numÚnoncancellable_real_denÚ
multiplierÚdivisorÚkÚ	namespaces                                    rV   Úmake_hyp_summatorr›   @   sð  € ð  #Ñ€A€qˆ+�uà�gŠg�kÑ"Ô"€GØ# q¨!¨W°R°a°R¬[¸'À!À"À"¼+ÀuÐ&MÑM€Eð  Ð+ÐØ ’|ÐØ%Ð9Ð)9€Là€FØ
Œ-€Cà€DØ€DØ€DØ€DØ€EØ€EØ€HØ€Hð €CÐ.Ñ/Ô/Ð/Ø€CÐ"Ñ#Ô#Ð#Ø€CˆÑÔÐð €CÐ+Ñ,Ô,Ð,Øð $ØˆÐ"Ñ#Ô#Ð#àð "ØˆÐ'Ñ(Ô(Ð(ØˆÐ Ñ!Ô!Ð!ØˆÐ'Ñ(Ô(Ð(ØˆÐ Ñ!Ô!Ð!Ð!àˆÐ$Ñ%Ô%Ð%ØˆÐ Ñ!Ô!Ð!à€CÐÑÔÐØ€CÐÑÔÐØ€CÐ Ñ!Ô!Ð!Ø€Cˆ�L„L€LØ€CÐ#Ñ$Ô$Ð$Øð )ØˆÐÑÔÐØˆÐÑÔÐØˆÐ$Ñ%Ô%Ð%ØˆˆG‰ŒˆØˆÐ'Ñ(Ô(Ð(å˜[Ñ)Ô)ð $ñ $‰ˆˆ4Ø�#ˆJ�q˜A’vÔˆØ�3Š;ˆ;Ø�4ˆ[˜˜ašÔ ×(Ò(¨Ñ+Ô+Ð+ØˆCÐ'¨1¨a°¨)Ñ3Ñ4Ô4Ð4Ð4Ø�SŠ[ˆ[Ø�4ˆ[˜˜ašÔ ×(Ò(¨Ñ+Ô+Ð+ØˆCÐ3°q¸!¸QÀÀ1°oÑEÑFÔFÐFÐFØ�SŠ[ˆ[Ø�Eˆ]˜1 š6Ô"×*Ò*¨1Ñ-Ô-Ð-ØˆCÐ7¸!Ñ;Ñ<Ô<Ð<ØˆCÐ$Ñ%Ô%Ð%ØˆCÐ"Ñ#Ô#Ð#ØˆCÐ!Ñ"Ô"Ð"ØˆCÐ.°!°Q°Ñ7Ñ8Ô8Ð8ØˆC�‰LŒLˆLØˆCÐ1°Q¸°FÑ:Ñ;Ô;Ð;Ñ;Ø�SŠ[ˆ[Ø�xÐ   a¢Ô(×0Ò0°Ñ3Ô3Ð3ØˆCÐ/°!Ñ3Ñ4Ô4Ð4ØˆCÐ+Ñ,Ô,Ð,ØˆCÐ$Ñ%Ô%Ð%ØˆCÐ+Ñ,Ô,Ð,ØˆCÐ$Ñ%Ô%Ð%àˆCÐ"Ñ#Ô#Ð#ØˆCÐ!Ñ"Ô"Ð"ØˆCÐ-°°A°Ñ6Ñ7Ô7Ð7ØˆC�‰LŒLˆLØˆCÐ0°A°q°6Ñ9Ñ:Ô:Ð:ØˆCÐ"Ñ#Ô#Ð#ØˆCÐ!Ñ"Ô"Ð"ØˆCÐ-°°A°Ñ6Ñ7Ô7Ð7ØˆC�‰LŒLˆLØˆCÐ0°A°q°6Ñ9Ñ:Ô:Ð:Ñ:åÐå�%‰jŒj€GÝ�%‰jŒj€GÝ˜7 GÑ,Ô,ÐØ#Ð$4Ð$5Ð$5Ô6ÐØ#Ð$4Ð$5Ð$5Ô6Ðð €CÐ#Ñ$Ô$Ð$à€CÐ&Ñ'Ô'Ð'Ø€CÐ,Ñ-Ô-Ð-Øð >ØˆÐ<Ñ=Ô=Ð=Ø€CÐ/Ñ0Ô0Ð0ð —’ÐIÐIÀDÐIÑIÔIØGÐGÀ$ÐGÑGÔGñHàGÐGÀ$ÐGÑGÔGñHñ Iô I€Jð —’ÐIÐIÀDÐIÑIÔIØGÐGÀ$ÐGÑGÔGñHàGÐGÀ$ÐGÑGÔGñHàKNÈ%ñPñ Qô Q€Gð ð 'ØˆˆL˜:Ñ%Ñ&Ô&Ð&Ø€Cˆ�wÑÑÔÐð €CÐÑÔÐØð !ØˆÐ!Ñ"Ô"Ð"ØˆÐÑ Ô Ð Ø€CÐ)Ñ*Ô*Ð*ð ñ 08õ
 Ð'Ñ(Ô(ÐlÐlˆA¨#¨#Ð.TÐX]Ð^_ÔX`ÐbgÐhiÔbjÐWkÑ.kÑ*lÔ*lÐ*lÐ*lØ(ÐeÐeˆA¨#¨#Ð.O×.WÒ.WÐX[Õ]`ÐabÑ]cÔ]cÑ.dÔ.dÑ*eÔ*eÐ*eÐ*eØ(ÐfÐfˆA¨#¨#Ð.P×.XÒ.XÐY\Õ^aÐbcÑ^dÔ^dÑ.eÔ.eÑ*fÔ*fÐ*fÐ*fÝÐ'Ñ(Ô(ÐlÐlˆA¨#¨#Ð.TÐX]Ð^_ÔX`ÐbgÐhiÔbjÐWkÑ.kÑ*lÔ*lÐ*lÐ*lØ(ÐeÐeˆA¨#¨#Ð.O×.WÒ.WÐX[Õ]`ÐabÑ]cÔ]cÑ.dÔ.dÑ*eÔ*eÐ*eÐ*eØ(ÐfÐfˆA¨#¨#Ð.P×.XÒ.XÐY\Õ^aÐbcÑ^dÔ^dÑ.eÔ.eÑ*fÔ*fÐ*fÐ*fàð 	<Øð BØ�Ð_Ñ`Ô`Ð`Ø�Ð$Ñ%Ô%Ð%Ø�Ð$Ñ%Ô%Ð%Ð%à�Ð@ÑAÔAÐAØ�Ð@ÑAÔAÐAÐAàð <Ø�ÐSÑTÔTÐTØ�Ð$Ñ%Ô%Ð%Ø�Ð$Ñ%Ô%Ð%Ð%à�Ð:Ñ;Ô;Ð;Ø�Ð:Ñ;Ô;Ð;àð 	"ð 	"ˆAØˆCÐM×UÒUÐVYÕ[^Ð_`Ñ[aÔ[aÑbÔbÑcÔcÐcØˆCÐ Ñ!Ô!Ð!ØˆCÐ Ñ!Ô!Ð!Ð!àð 	Dð 	DˆAØˆCÐ7×?Ò?ÀÅSÈÁVÄVÑLÔLÑMÔMÐMØˆCÐ2×:Ò:¸3ÅÀAÁÄÑGÔGÑHÔHÐHØˆCÐ2×:Ò:¸3ÅÀAÁÄÑGÔGÑHÔHÐHØˆCÐ-×5Ò5°c½3¸q¹6¼6ÑBÔBÑCÔCÐCØˆCÐ-×5Ò5°c½3¸q¹6¼6ÑBÔBÑCÔCÐCÐCð	Dõ Ð'Ñ(Ô(ÐlÐlˆA¨#¨#Ð.TÐX]Ð^_ÔX`ÐbgÐhiÔbjÐWkÑ.kÑ*lÔ*lÐ*lÐ*lØ(ÐeÐeˆA¨#¨#Ð.O×.WÒ.WÐX[Õ]`ÐabÑ]cÔ]cÑ.dÔ.dÑ*eÔ*eÐ*eÐ*eØ(ÐfÐfˆA¨#¨#Ð.P×.XÒ.XÐY\Õ^aÐbcÑ^dÔ^dÑ.eÔ.eÑ*fÔ*fÐ*fÐ*fØð 	8ØˆCÐ<Ñ=Ô=Ð=Ð=àˆCÐ6Ñ7Ô7Ð7ð ð ØˆÐÑÔÐØˆÐÑÔÐØˆÐ?Ñ@Ô@Ð@ØˆˆOÑÔÐÐàˆÐÑÔÐØˆÐ&Ñ'Ô'Ð'ØˆˆOÑÔÐð
 €CÐÑÔÐØ€CÐmÑnÔnÐnð ÐBÐBˆ�s�sÐ,×4Ò4°S½#¸a¹&¼&ÑAÔAÑBÔBÐBÐBØÐBÐBˆ�s�sÐ,×4Ò4°S½#¸a¹&¼&ÑAÔAÑBÔBÐBÐBØÐCÐCˆ�s�sÐ-×5Ò5°c½3¸q¹6¼6ÑBÔBÑCÔCÐCÐCØÐCÐCˆ�s�sÐ-×5Ò5°c½3¸q¹6¼6ÑBÔBÑCÔCÐCÐCØÐEÐEˆ�s�sÐ/×7Ò7¸½SÀ¹V¼VÑDÔDÑEÔEÐEÐEØÐEÐEˆ�s�sÐ/×7Ò7¸½SÀ¹V¼VÑDÔDÑEÔEÐEÐEØÐDÐDˆ�s�sÐ.×6Ò6°s½CÀ¹F¼FÑCÔCÑDÔDÐDÐDØÐDÐDˆ�s�sÐ.×6Ò6°s½CÀ¹F¼FÑCÔCÑDÔDÐDÐDàð %ØˆÐ3Ñ4Ô4Ð4ØˆÐ3Ñ4Ô4Ð4àˆˆI‰ŒˆØˆˆMÑÔÐØˆÐ6Ñ7Ô7Ð7ØˆˆKÑÔÐØˆÐ&Ñ'Ô'Ð'ØˆˆKÑÔÐØˆÐ"Ñ#Ô#Ð#ØˆˆG‰ŒˆØˆÐÑÔÐàˆÐ'Ñ(Ô(Ð(Ð(àˆÐ3Ñ4Ô4Ð4àˆˆI‰ŒˆØˆÐ"Ñ#Ô#Ð#ØˆˆG‰ŒˆØˆÐÑÔÐàˆÐ#Ñ$Ô$Ð$à�YŠYÐ:Ð:°6Ð:Ñ:Ô:Ñ:Ô:€FØSÐV[Ñ[Ð_eÑe€Fà€Iå	ˆ&•'‘)”)˜YÑ'Ô'Ð'ð �9˜UÔ#Ð#Ð#rU   Úsagec                 ó@   ‡‡‡‡‡— ddl mŠ | \  ŠŠŠŠˆˆˆˆˆfd„}d|fS )z™
        Returns a function that sums a generalized hypergeometric series,
        for given parameter types (integer, rational, real, complex).
        r   )Úhypsum_internalc                 ó.   •—  ‰‰‰
‰	‰| ||||||¦  «        S ©NrT   )ÚcoeffsÚzÚprecÚwpÚepsshiftÚmagnitude_checkÚkwargsrž   r}   r   r~   r€   s          €€€€€rV   Ú_hypsumz"make_hyp_summator.<locals>._hypsum?  s.   ø€ Ø"�? 1 a¨°e¸VÀQØ�b˜( O°Vñ=ô =ð =rU   z(none))Úsage.libs.mpmath.ext_mainrž   )r|   r¨   rž   r}   r   r~   r€   s     @@@@@rV   r›   r›   8  sc   øøøøø€ ð
 	>Ð=Ð=Ð=Ð=Ð=Ø#&Ñ ˆˆ1ˆk˜5ð	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð ˜Ð Ð rU   c                 ó@  — | \  }}}}|s=| t           k    rt           S | t          k    rt          S | t          k    rt          S t
          S ||z   }t          j        }|dk    rId|dz
  z  dz    ||d¦  «        k    r0|rt          t          d||¦  «        S t          t          d||¦  «        S || k     rEt          | d¦  «        } t          t          |dz   ¦  «        |dz   ¦  «        }	t          | |	||¦  «        S |t          |¦  «        z   dz   }
t          t          | |
¦  «        ¦  «        }||z  |
z	  }|dd}}}|r-||z  |
z	  |z  }|d|z  dz   z  }|dz  r||z  }n||z  }|dz  }|°-||
dz   z  t          t!          |
¦  «        |
¦  «        z  }|r| }t#          ||
 ||¦  «        S )	Né   é   r   gW“§¬¦ëà?r   é   é   i90  )r   r   r   r   r   r   ÚmathÚlogr$   r&   r+   r/   r)   Úabsr   r*   r2   r   )Úxr£   ÚrndÚsignÚmanÚexpÚbcÚsizeÚlgÚcr¤   ÚtÚt2ÚsÚtermr™   s                   rV   Úmpf_erfr¿   O  sâ  € ØÑ€Dˆ#ˆs�BØð Ø•Š:ˆ:�e�|Ø•Š9ˆ9�T�kØ�uŠ9ˆ9�U�lÝˆØ�‰8€DÝ	Œ€Bàˆa‚x€x�A�t˜A‘v‘J Ñ)¨B¨B¨t°A©J¬JÒ6Ð6Øð 	3Ý�u a¨¨sÑ3Ô3Ð3å�t Q¨¨cÑ2Ô2Ð2àˆtˆe‚|€|å�a˜‰NŒNˆÝ•V˜D ™G‘_”_ d¨2¡gÑ.Ô.ˆå�q˜!˜T 3Ñ'Ô'Ð'Ø	•�D‘	”	Ñ	˜BÑ	€Bå�H�Q˜‰OŒOÑÔ€AØ
ˆA‰#�"‰€BØ�E˜1ˆQ€t€AØ
ð Ø�"‰f˜‰^ Ñ!ˆØ�Q�q‘S˜‘U‰|ˆØˆq‰5ð 	Ø�‰IˆAˆAà�‰IˆAØ	ˆQ‰ˆð ð ð 
ˆr�!‰t‰�¥H¨R¡L¤L°"Ñ5Ô5Ñ5€AØð ØˆBˆÝ˜˜B˜3  cÑ*Ô*Ð*rU   c                 ó@   — t          | ¦  «        }|dz  dz  |k    rdS dS )Nr¬   ç
×£p=
÷?TF)r   )r²   r£   ro   s      rV   Úerfc_check_seriesrÂ   |  s*   € Ýˆq‰	Œ	€AØˆ!�tˆd�{�TÒÐØˆtØˆ5rU   c                 óÜ  — | \  }}}}|s=| t           k    rt          S | t          k    rt           S | t          k    rt          S t
          S |dz   }||z   }|t          dd|z  ¦  «        z  }|p|dk     }	|	st          | |¦  «        s†|	r4t          t          t          | |dz   t          |         ¦  «        ||¦  «        S t          | ¦  «        dz   }
t          t          t          | |t          |
dz  dz  ¦  «        z   dz   ¦  «        ||¦  «        S t          |z  x}}d}dt          | |¦  «        dz  z  |z	  }d}	 |d|z  dz
  z  |z  |z  }|dk    r||k    s|sn|dz  r||z  }n||z  }|}|dz  }Œ8||z  t          t!          |¦  «        |¦  «        z  }t#          || |¦  «        }t%          t'          t)          | | |¦  «        |¦  «        |¦  «        }t+          t)          |||¦  «        | ||¦  «        }|S )Nr­   r   r¬   é
   r   rÁ   é   )r   r   r   r   r   r   ÚmaxrÂ   r'   r¿   r   r   Úintr   r   r*   r2   r   r0   r%   r(   r)   )r²   r£   r³   r´   rµ   r¶   r·   r¤   ÚmagÚregular_erfro   r½   r¾   Ú	term_prevr»   r™   r¢   Úys                     rV   Úmpf_erfcrÌ   ‚  s)  € ØÑ€Dˆ#ˆs�BØð Ø•Š:ˆ:�d�{Ø•Š9ˆ9�U�lØ•Š:ˆ:�d�{ÝˆØ	�‰€BØ
ˆS‰&€Cà�#ˆa��3‘‰-Œ-Ñ€BØ�/˜# š'€KØð PÕ+¨A¨rÑ2Ô2ð PØð 	TÝ�4¥¨¨D°©Gµ\À#Ô5FÑ!GÔ!GÈÈsÑSÔSÐSå�1‰IŒI�a‰KˆÝ•t�W Q¨­s°1°a±4¸±9©~¬~Ñ(=ÀÑ(BÑCÔCÀTÈ3ÑOÔOÐOÝ˜"‰}Ð€AˆØ€IØ	
�X�a˜‰_Œ_ Ñ!Ñ	! bÑ(€AØ	€Að
Ø˜˜1™˜q™Ñ! bÑ(¨QÑ.ˆØˆqŠ5ˆ5�T˜IÒ%Ð%¨TÐ%ØØˆq‰5ð 	Ø�‰IˆAˆAà�‰IˆAØˆ	à	ˆQ‰ˆð
ð 
ˆb‰•Z¥¨¡¤¨bÑ1Ô1Ñ1€AÝ�Q˜˜˜RÑ Ô €AÝ•�  ! B™œ¨Ñ+Ô+¨BÑ/Ô/€AÝ•˜˜1˜bÑ!Ô! 1 d¨CÑ0Ô0€AØ€HrU   c                 óJ   — | x}}d}|r|| z  |z	  |z  }|||z  z  }|dz  }|°|S ©Nr¬   r   rT   )r²   r£   r½   r»   r™   s        rV   Ú	ei_taylorrÏ   °  sQ   € Ø€I€AˆØ	€AØ
ð Ø�‰c�d‰]˜qÑ ˆØ	ˆQ�!‰V‰ˆØ	ˆQ‰ˆð ð ð €HrU   c                 ó  — t           }| x}}|x}}d} ||¦  «         ||¦  «        z   dk    rR|| z  ||z  z
  |z  |z	  ||z  || z  z   |z  |z	  }}|||z  z  }|||z  z  }|dz  } ||¦  «         ||¦  «        z   dk    °R||fS )Nr¬   é   r   )r±   )	ÚzreÚzimr£   Ú_absÚsreÚtreÚsimÚtimr™   s	            rV   Úcomplex_ei_taylorrÙ   ¹  sÃ   € Ý€DØ€O€Cˆ#Ø€O€Cˆ#Ø	€AØ
ˆ$ˆs‰)Œ)�d�d˜3‘i”iÑ
 !Ò
#Ð
#Ø˜‘W˜S ™W‘_ qÑ(¨4Ñ/°3°s±7¸3¸s¹7±?ÀQÑ2FÈÑ1MˆSˆØˆs�a‰x‰ˆØˆs�a‰x‰ˆØ	ˆQ‰ˆð	 ˆ$ˆs‰)Œ)�d�d˜3‘i”iÑ
 !Ò
#Ð
#ð
 �ˆ8€OrU   c                 ón   — t           |z  }||z  | z  x} }|| z   }d}|r||z  | z  |z	  }||z  }|dz  }|°|S rÎ   )r   )r²   r£   Úoner»   r½   r™   s         rV   Úei_asymptoticrÜ   Å  sh   € Ý
�T‰/€CØ�T‰k˜aÑÐ €AˆØˆa‰€AØ	€AØ
ð Øˆq‰S�‰U�t‰OˆØ	ˆQ‰ˆØ	ˆQ‰ˆð ð ð €HrU   c                 ól  — t           }t          |z  }||z  | | z  z   |z	  }| |z  |z  x}}| |z  |z  x}}	||z   }
|}d} ||¦  «         ||	¦  «        z   dk    rY||z  |	|z  z
  |z  |z	  ||z  |	|z  z   |z  |z	  }	}|
|z  }
||	z  }|dz  }||k    rt          ‚ ||¦  «         ||	¦  «        z   dk    °Y|
|fS )Nr¬   iè  r   )r±   r   rP   )rÒ   rÓ   r£   rÔ   rÛ   ÚMÚxrerÖ   ÚximrØ   rÕ   r×   r™   s                rV   Úcomplex_ei_asymptoticrá   Ð  s  € Ý€DÝ
�T‰/€CØ	ˆS‰�3�s‘7Ñ	˜tÑ#€Aà˜‘ Ñ"Ð"€Cˆ#Ø�$˜4‘ AÑ%Ð%€Cˆ#Ø
�‰)€CØ
€CØ	€AØ
ˆ$ˆs‰)Œ)�d�d˜3‘i”iÑ
 $Ò
&Ð
&à˜‘W˜S ™W‘_ aÑ'¨$Ñ.°#°c±'¸#¸c¹'±/À1Ñ1DÀtÑ0KˆSˆØˆs‰
ˆØˆs‰
ˆØ	ˆQ‰ˆØˆtŠ8ˆ8ÝÐð ˆ$ˆs‰)Œ)�d�d˜3‘i”iÑ
 $Ò
&Ð
&ð �ˆ8€OrU   Fc                 ó˜  — |rt          | ¦  «        } | \  }}}}|r#|s!| t          k    rt          S t          d¦  «        ‚|�r8d|||f}||z   }	|dz   }
|	|
k    }|s+|dk    r||z  }n|| z	  }|t	          |
dz  ¦  «        dz   k    }|rm|	|
k    rt
          }n-t          t          t          | |
¦  «        |
¦  «        |
 ¦  «        }t          |t          | |
¦  «        |
¦  «        }t          || ||¦  «        }nÆ|
dt	          t          |¦  «        ¦  «        z  z  }
t          | |
¦  «        }t          ||
¦  «        t          |
¦  «        z   }t          ||
 ¦  «        }t          ||
¦  «        }t!          ||||¦  «        }n@| t          k    rt"          }n-| t          k    rt          }n| t"          k    rt          }nt$          }|rt          |¦  «        }|S )NzE1(x) for x < 0r   r­   ç“V-æ?rÄ   r¬   )r%   r   r   r
   rÇ   r   r   rÜ   r   r(   r0   r)   r   rÏ   rN   r1   r   r   r   )r²   r£   r³   Úe1r´   rµ   r¶   r·   ÚxabsÚxmagr¤   Úcan_use_asympÚxabsintÚvÚuÚt1r¼   s                    rV   Úmpf_eirì   ä  së  € Ø	ð Ý�A‰JŒJˆØÑ€Dˆ#ˆs�BØ	ð /�$ð /Ø•Š:ˆ:ÝˆKÝÐ-Ñ.Ô.Ð.Ø
ñ Ø�#�s˜BˆˆØ�2‰vˆØ�B‰YˆØ˜rš	ˆØð 	9Ø�aŠxˆxØ ™*��à 3 $™-�Ø#¥c¨"¨U©(¡m¤m°bÑ&8Ò8ˆMØð 	+Ø�bŠyˆyÝ��å ¥­x¸¸2©¬ÀÑ!CÔ!CÀbÀSÑIÔI�Ý˜�7 1 b™>œ>¨2Ñ.Ô.ˆAÝ˜˜1˜d CÑ(Ô(ˆAˆAà�!•C�˜t™œÑ%Ô%Ñ%Ñ%ˆBÝ˜˜B‘”ˆAÝ˜!˜RÑ Ô ¥;¨r¡?¤?Ñ2ˆAÝ˜a  Ñ$Ô$ˆBÝ˜˜bÑ!Ô!ˆBÝ˜˜B  cÑ*Ô*ˆAˆAà•Š:ˆ:�5�q�qØ•$ŠYˆY�D˜˜Ø•%ŠZˆZ�U˜˜ÝˆaØ	ð Ý�A‰JŒJˆØ€HrU   c           
      óˆ  — |rt          | ¦  «        } | \  }}|\  }}}}	|\  }
}}}|t          k    rc|rIt          t          |||¦  «        ¦  «        }|st          t	          ||¦  «        ¦  «        }nt          }||fS t          |||¦  «        t          fS |t          k    r|r|st
          t
          fS |dz   }||	z   }||z   }t          ||¦  «        }||k    }|sRt          t          |¦  «        ¦  «        t          t          |¦  «        ¦  «        z   }|t          |dz  ¦  «        dz   k    }	 |�r||k    rt          t          f}nVt          ||¦  «        }t          ||¦  «        }t          |||¦  «        \  }}t          || ¦  «        t          || ¦  «        f}t          |t          | |¦  «        |¦  «        }t!          || |¦  «        }|rt          |||¦  «        }nh|\  }}|
r1t#          |||¦  «        t%          |t	          |¦  «        ||¦  «        f}n0t#          |||¦  «        t'          |t	          |¦  «        ||¦  «        f}|S n# t(          $ r Y nw xY w|dt          t          t+          | d¦  «        ¦  «        ¦  «        z  z  }t          ||¦  «        }t          ||¦  «        }t-          |||¦  «        \  }}|t/          |¦  «        z  }t          || ¦  «        t          || ¦  «        f}|rt1          t          | ¦  «        |¦  «        }nt1          | |¦  «        }t3          ||||¦  «        }|rt          |¦  «        }|S )Né(   rã   r­   r¬   rÑ   )r;   r   r%   rì   r/   r   rÆ   r±   r   rÇ   r   r   rá   r   r:   rJ   r=   r   r'   r   rP   rG   rÙ   rN   r@   rA   )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ÿ     sm  € Ø	ð Ý�A‰JŒJˆØ�D€A€qØÑ€Eˆ4��sØÑ€Eˆ4��sØ�E‚z€zØð 	/Ý�˜q $¨Ñ,Ô,Ñ-Ô-ˆAØð Ý�F 4¨Ñ-Ô-Ñ.Ô.��å�Ø�a�4ˆKå˜!˜T 3Ñ'Ô'­Ð.Ð.Ø�E‚z€zØð 	 ˜4ð 	 Ý�$�<ÐØ	�‰€BØ�‰8€DØ�‰8€DÝˆt�T‰?Œ?€DØ˜2’I€MØð 5Ý•f˜Q‘i”i‘.”.¥3¥v¨a¡y¤y¡>¤>Ñ1ˆØ¥# b¨¡h¡-¤-°"Ñ"4Ò4ˆðØñ 	Ø�bŠyˆyÝ�%�K��å˜q "‘o”o�Ý˜q "‘o”o�Ý0°°c¸2Ñ>Ô>‘��SÝ   r cÑ*Ô*­L¸¸r¸cÑ,BÔ,BÐB�Ý˜�7 1 b™>œ>¨2Ñ.Ô.ˆAÝ˜˜1˜bÑ!Ô!ˆAØð QÝ˜A˜t SÑ)Ô)��à‘��1Øð QÝ  4¨Ñ-Ô-­w°q½&À¹*¼*ÀdÈCÑ/PÔ/PÐP�A�Aå  4¨Ñ-Ô-­w°q½&À¹*¼*ÀdÈCÑ/PÔ/PÐP�AØˆHð%	øõ& ð ð ð Øˆðøøøð ˆ!�C••w˜q !‘}”}Ñ%Ô%Ñ&Ô&Ñ
&Ñ&€BÝ
�1�b‰/Œ/€CÝ
�1�b‰/Œ/€CÝ   c¨2Ñ.Ô.�H€CˆØ�;�r‰?Œ?Ñ€CÝ�S˜"˜ÑÔ�|¨C°°Ñ4Ô4Ð4€AØ	ð Ý•G˜A‘J”J˜rÑ"Ô"ˆˆå�A�b‰MŒMˆÝ��1�d˜CÑ Ô €AØ	ð Ý�A‰JŒJˆØ€Hs   Ä*DI É
IÉIc                 ó&   — t          | ||d¦  «        S ©NT)rì   ©r²   r£   r³   s      rV   Úmpf_e1r  O  ó   € Ý�!�T˜3 Ñ%Ô%Ð%rU   c                 ó&   — t          | ||d¦  «        S r  )rÿ   r  s      rV   Úmpc_e1r  R  r  rU   c           
      óH
  — |\  }}}}|s¤|rO|t           k    r"| dk    r	t          dfS t          | ||¦  «        dfS |t          k    r	t           dfS t          t          fS |t           k    r&| dk    rt	          d| dz
  ||¦  «        dfS t          dfS |t          k    r	t           dfS t          t          fS | }	|rd| z
  } |dz   }
||z   }|dk     rt
          ‚t          t          | ¦  «        ¦  «        }| dk    o|}t          |¦  «        }| dk    sd|z  |z
  |
 k     r\|r6t          ||
¦  «        }t          |t          ||	dz
  |
¦  «        ||¦  «        }�n8t          ||
¦  «        }t          ||||¦  «        }�nd|
z  | cxk     odk    nc }|s‡t          t          |¦  «        ¦  «        }t          t          d|| z
  ¦  «        d|
z  ¦  «        }|  |z  || z   t          t          || z   ¦  «        ¦  «        z  z   ||z  z
  d|z  d	z  z
  }|
 d
z
  }||k     }|r·t            |
|
z   z  t#          ||
¦  «        z  }| }||z  }t           |
z  }|r|r||z  }|dz  }||z  |z  |
z	  }|r|°t          ||
¦  «        }|r$t          |t          ||	dz
  |
¦  «        |
¦  «        }nt          |||
¦  «        }t          |t%          ||
 ¦  «        ||¦  «        }�n¿| dk    r t          t'          |||¦  «        ¦  «        }�n™| dk    �r‹| d|
z  k     �r�t          t'          ||
¦  «        ¦  «        }|r|	dz  rt          |¦  «        }n#t          |t          || dz
  |
¦  «        |
¦  «        }t#          ||
¦  «        x}}dg| dz
  z  }t)          d| dz
  ¦  «        D ]}||dz
           |z  ||<   Œ|ddd…         }|d         |
z  }t)          d| dz
  ¦  «        D ],}|dz  r|||         |z  z  }n|||         |z  z  }||z  |
z	  }Œ-t%          ||
 |
¦  «        }t          |t          ||
¦  «        ¦  «        }|r t          |t          ||	|
¦  «        |
¦  «        }t+          ||¦  «        }t          |t-          t/          | dz
  ¦  «        ¦  «        ||¦  «        }nt
          ‚|ršt-          t/          | dz
  ¦  «         ¦  «        }|r4t          t1          |
¦  «        |||¦  «        }|	dz  rt          |¦  «        }n@t          t          t1          |
¦  «        t          ||	dz
  |
¦  «        |
¦  «        |||¦  «        }||fS |dfS )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

    r   Nr   r­   iöÿÿÿr¬   éýÿÿÿé�   éd   rÄ   r«   éÿÿÿÿ)r   r   rL   r   r   ÚNotImplementedErrorr   r±   r%   r0   r(   r-   r)   r   ry   rÆ   r   r   r   rì   rz   r   r   rK   r/   ) ro   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Ò  € ð Ñ€Dˆ#ˆs�BØð Øð 	Ø•EŠzˆzà˜’6�6Ý ˜:Ð%Ý$ Q¨¨cÑ2Ô2°DÐ8Ð8Ø•DŠyˆyÝ˜d�{Ð"å��:Ðà•EŠzˆzØ�q’5�5Ý(¨¨A¨a©C°°sÑ;Ô;¸TÐAÐAå ˜:Ð%Ø•DŠyˆyÝ˜d�{Ð"Ý��:ÐØ€FØð Øˆa‰CˆØ	�‰€BØ�‰8€Dàˆc‚z€zÝ!Ð!Ý•C˜‘F”FÑÔ€DØ�A’�˜$€IÝ�1‰:Œ:€DàˆA‚v€v��4‘˜$‘ " Ò$Ð$Øð 	*Ý˜˜bÑ!Ô!ˆAÝ˜�K¨¨6°!©8°RÑ8Ô8¸$ÀÑDÔDˆB‰Bå˜˜bÑ!Ô!ˆAÝ˜˜A˜t SÑ)Ô)ˆB‰Bð %' r¡E¨A N N¢N N°¢N N N NÐ!à(ð 	2Ý•V˜A‘Y”Y‘”ˆBÝ•C˜˜2˜a™4‘L”L ! B¡$Ñ'Ô'ˆAØ�"�T‘'˜Q˜q™S¥(­3¨q°©s©8¬8Ñ"4Ô"4Ñ4Ñ4°q¸±vÑ=ÀÀQÁÈÁÑLˆCØ�#�b‘&ˆCØ(+¨cª	Ð%Ø$ð -	&Ý�(  2¡Ñ&­8°A°r©?¬?Ñ:ˆAØˆAØ�!‘ˆAÝ˜2‘ˆAØð "˜ð "Ø�Q‘�Ø�Q‘�Ø�q‘S˜‘U˜r‘M�ð ð "˜ð "õ ˜˜bÑ!Ô!ˆAØð &å˜A�{¨1¨f°Q©h¸Ñ;Ô;¸RÑ@Ô@��õ ˜A˜q "Ñ%Ô%�Ý˜�L¨¨R¨CÑ0Ô0°$¸Ñ<Ô<ˆB‰BØ�!ŠVˆVÝ�  d¨CÑ0Ô0Ñ1Ô1ˆB‰BØ�ŠU‰U�q˜1˜R™4’x‘xÝ�  bÑ)Ô)Ñ*Ô*ˆBØð AØ˜A‘:ð %Ý  ™œ�Bøå˜R¥¨T°1°Q±3¸Ñ!;Ô!;¸RÑ@Ô@�Ý˜Q ‘O”OÐ#ˆA�Ø�3˜!˜A™#‘;ˆDÝ˜1˜Q˜q™S‘\”\ð (ð (�Ø˜q ™sœ) a™-��Q‘�Ø˜˜˜"˜”:ˆDØ�Q”˜2‘ˆAÝ˜1˜a ™c‘]”]ð  ð  �Ø�q‘5ð %Ø˜˜aœ 1™Ñ$�A�Aà˜˜aœ 1™Ñ$�AØ�q‘S˜R‘K��Ý˜a "  bÑ)Ô)ˆBÝ˜�W T¨2Ñ.Ô.Ñ/Ô/ˆBØð AÝ˜R¥¨Q°¸Ñ!;Ô!;¸RÑ@Ô@�Ý˜˜B‘”ˆAÝ˜�H¥T¨!¨A©#¡Y¤YÑ/Ô/°°sÑ;Ô;ˆBˆBå%Ð%Øð 
Ý•d˜1˜Q™3‘i”i�ZÑ Ô ˆØð 	aÝ� ™œ Q¨¨cÑ2Ô2ˆBØ˜‰zð !Ý˜R‘[”[�øå�¥¨¡¤­[¸¸vÀa¹xÈÑ-LÔ-LÈbÑQÔQÐSTÐVZÐ\_Ñ`Ô`ˆBØ�2ˆvˆà�4ˆxˆrU   c                 óÐ   — t          | |¦  «        } | | z   |z	  }|dk    rdt          |z  d}}}n| | d}}}|r ||z  ||dz
  z  z  |z	  }|||z  z  }|dz  }|° t          || ¦  «        S )z2
    0 - Ci(x) - (euler+log(x))
    1 - Si(x)
    r   r¬   r«   r   )r   r   r   )r²   r¤   ÚwhichÚx2r½   r»   r™   s          rV   Úmpf_ci_si_taylorr!  Ë  sŸ   € õ
 	��B‰Œ€AØˆQ‰3ˆ�2‰€BØ�‚z€zØ•g˜r‘k Aˆaˆ1ˆˆà�Q˜ˆaˆ1ˆØ
ð Øˆr‰T�A�q˜‘s‘G‰_˜rÑ!ˆØ	ˆQ�‰T‰	ˆØ	ˆQ‰ˆð ð õ ˜˜B˜3ÑÔÐrU   c                 óH  — | d         r| d         | d         z   }n|d         r|d         |d         z   }|d         rt          ||d         |d         z   ¦  «        }|dk    s|| k     rt          ‚|d|z
  z  }t          | |¦  «        }t          ||¦  «        }||z  ||z  z
  |z	  }d|z  |z  |z	  }|}	|}
t          |z  }|dk    rddt          |z  ddf\  }}}	}
}n||||df\  }}}	}
}t          t	          |	¦  «        t	          |
¦  «        ¦  «        dk    rm||dz
  z  }|	|z  |
|z  z
  |z  |z	  |	|z  |
|z  z   |z  |z	  }
}	||	|z  z  }||
|z  z  }|dz  }t          t	          |	¦  «        t	          |
¦  «        ¦  «        dk    °mt          || ¦  «        t          || ¦  «        fS )Nr   r¬   r«   éþÿÿÿr   )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û  € ð 
ˆ!„uð Ø�Œe�B�q”E‰kˆˆØ	ˆAŒð Ø�Œe�B�q”E‰kˆØ	ˆ!„uð $Ý�#�r˜!”u˜R œU‘{Ñ#Ô#ˆØ
ˆQ‚w€w�#˜˜’)�)Ý!Ð!Øˆ1ˆS‰5�M€BÝ
�2�rÑ
Ô
€CÝ
�2�rÑ
Ô
€CØ�‰G�C˜‘G‰O˜bÑ €DØˆs‰F�3‰J˜Ñ€DØ
€CØ
€CÝ
�2‰+€CØ�‚z€zØ ! 1¥w°¡{°Q¸Ð 9ÑˆˆS�#�s˜A˜Aà # S¨#¨s°AÐ 5ÑˆˆS�#�s˜AÝ
�c�#‰hŒh�˜C™œÑ
!Ô
! AÒ
%Ð
%Øˆq�‰s‰GˆØ˜‘X˜c $™hÑ&¨Ñ*¨RÑ/°3°t±8¸CÀ¹HÑ3DÀqÑ2HÈ2Ñ1MˆSˆØˆs�A‰v‰ˆØˆs�A‰v‰ˆØ	ˆQ‰ˆõ �c�#‰hŒh�˜C™œÑ
!Ô
! AÒ
%Ð
%õ ˜˜b˜SÑ!Ô!¥<°°b°SÑ#9Ô#9Ð9Ð9rU   r¬   c           	      óÆ  — |dz   }| \  }}}}d\  }	}
|s£| t           k    rt          t           fS | t          k    r| | fS t           }	|dk    rj| t          k    rt	          t          ||¦  «        d¦  «        }
| t          k    r6t          t	          t          |t          |         ¦  «        d¦  «        ¦  «        }
|	|
fS ||z   }|| k     rc|dk    rt          | d|z
  ||¦  «        }
|dk    r>t          |¦  «        }t          | ¦  «        }t          |t          ||¦  «        ||¦  «        }	|	|
fS ||k    r{|dk    rK|r)t          t          |t          |         ¦  «        ¦  «        }
nt          ||¦  «        }
t	          |
d¦  «        }
|dk    r t          t          | |¦  «        | ||¦  «        }	|	|
fS |t          |¦  «        z  }|dz
  t!          j        |d¦  «        k    }|sŒ|dk    r t%          t'          | |d¦  «        ||¦  «        }
|dk    r\t'          | |d¦  «        }	t          |	t          |¦  «        |¦  «        }	t          |	t          t          | ¦  «        |¦  «        ||¦  «        }	|	|
fS t          | ¦  «        } t)          | |¦  «        }t*          d|z  z  |z  }t*          |z  }|}|}d}|r/| }||z  |z  |z	  }|dz  }||z  }||z  |z  |z	  }|dz  }||z  }|°/t-          || ¦  «        }t-          || ¦  «        }t          || |¦  «        }t          || |¦  «        }t/          | |¦  «        \  }}|dk    r{t          t1          ||¦  «        t1          ||¦  «        |¦  «        }
t3          t	          t          |¦  «        d¦  «        |
|¦  «        }
|rt          |
¦  «        }
t%          |
||¦  «        }
|dk    r.t3          t1          ||¦  «        t1          ||¦  «        ||¦  «        }	|	|
fS )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.
    r­   )NNr   r  r   r¬   )r   r   r   r   r&   r/   r%   r   r$   rM   r   r   r1   r)   r5   r±   r¯   r°   r   r!  r   r   r   r3   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_sir2  û  s  € ð 
�‰€BØÑ€Dˆ#ˆs�BØ�F€BˆØð Ø•Š:ˆ:Ý�5�>Ð!Ø•Š9ˆ9Ø�q�6ˆMÝˆØ�AŠ:ˆ:Ø•DŠyˆyÝ�v d¨CÑ0Ô0°"Ñ5Ô5�Ø•EŠzˆzÝ�Y¥v¨dµLÀÔ4EÑ'FÔ'FÈÑKÔKÑLÔL�Ø�Bˆxˆà
ˆb‰&€CØ
ˆbˆS‚y€yØ�AŠ:ˆ:Ý˜Q  $¡¨¨cÑ2Ô2ˆBØ�AŠ:ˆ:Ý˜"‘”ˆAÝ˜1‘:”:ˆDÝ˜�G D¨"Ñ-Ô-¨t°SÑ9Ô9ˆBØ�2ˆvˆà	ˆrŠˆØ�AŠ:ˆ:Øð 'Ý�V D­,°sÔ*;Ñ<Ô<Ñ=Ô=��å˜D #Ñ&Ô&�Ý˜2˜rÑ"Ô"ˆBØ�AŠ:ˆ:Ý�  B™œ¨¨D°#Ñ6Ô6ˆBØ�2ˆvˆà
�c�#‰hŒh‰ˆð �Q‘�œ " a™œÒ(€Jàð Ø�AŠ:ˆ:ÝÕ)¨!¨R°Ñ3Ô3°T¸3Ñ?Ô?ˆBØ�AŠ:ˆ:Ý! ! R¨Ñ+Ô+ˆBÝ˜�Y r™]œ]¨BÑ/Ô/ˆBÝ˜�W¥W¨Q¡Z¤Z°Ñ4Ô4°d¸CÑ@Ô@ˆBØ�2ˆvˆÝ�‰
Œ
€Aå	�!�R‰Œ€BÝ
�A�b‘D‰/˜bÑ	 €BÝ
�R‰-€BØ	€BØ
€AØ	€AØ
ð ØˆBˆØˆr‰T�!‰V�b‰LˆØ	ˆQ‰ˆØ
ˆa‰ˆØˆr‰T�!‰V�b‰LˆØ	ˆQ‰ˆØ
ˆa‰ˆð ð õ 
�b˜2˜#Ñ	Ô	€BÝ	�b˜2˜#Ñ	Ô	€BÝ	��Q˜Ñ	Ô	€BÝ	��Q˜Ñ	Ô	€BÝ˜1˜bÑ!Ô!�H€Cˆð �‚z€zÝ•W˜S "Ñ%Ô%¥w¨s°BÑ'7Ô'7¸Ñ<Ô<ˆÝ•Y�v b™zœz¨2Ñ.Ô.°°BÑ7Ô7ˆØð 	Ý˜‘”ˆBÝ�R˜˜sÑ#Ô#ˆØ�‚z€zÝ•W˜S "Ñ%Ô%¥w¨s°BÑ'7Ô'7¸¸sÑCÔCˆØˆrˆ6€MrU   c                 óf   — t          | ¦  «        dk     rt          ‚t          | ||d¦  «        d         S )Nr   )r   r
   r2  r  s      rV   Úmpf_cir4  X  s0   € Ý��{„{�Q‚€ÝÐÝ�Q˜˜c 1Ñ%Ô% aÔ(Ð(rU   c                 ó2   — t          | ||d¦  «        d         S )Nr   )r2  r  s      rV   Úmpf_sir6  ]  s   € Ý�Q˜˜c 1Ñ%Ô% aÔ(Ð(rU   c                 óf  — | \  }}|t           k    rFt          |||d¦  «        d         }t          |¦  «        dk     r|t          ||¦  «        fS |t           fS |dz   }t	          |||d¦  «        \  }}t          |t          |¦  «        |¦  «        }t          ||ft          | |¦  «        ||¦  «        }|S )Nr   r­   )	r   r2  r   r/   r'  r   rM   rA   r@   )	r¢   r£   r³   r  r  r)  r¤   ÚcreÚcims	            rV   Úmpc_cir:  `  s·   € Ø�F€BˆØ	�U‚{€{Ý�r˜4  aÑ(Ô(¨Ô+ˆÝ�B‰<Œ<˜!ÒÐØ�˜t SÑ)Ô)Ð*Ð*Ø•Eˆ{ÐØ	�‰€BÝ  B¨¨AÑ.Ô.�H€CˆÝ
�#•y ‘}”} bÑ
)Ô
)€CÝ	�#�s��W Q¨™^œ^¨T°3Ñ	7Ô	7€BØ€IrU   c                 ó°   — | \  }}|t           k    rt          |||d¦  «        d         t           fS |dz   }t          |||d¦  «        } t          | ||¦  «        S )Nr   r­   )r   r2  r'  rB   )r¢   r£   r³   r  r  r¤   s         rV   Úmpc_sir<  m  s`   € Ø�F€BˆØ	�U‚{€{Ý˜"˜d C¨Ñ+Ô+¨AÔ.µÐ6Ð6Ø	�‰€BÝ˜˜R  QÑ'Ô'€AÝ�1�d˜CÑ Ô Ð rU   c                 óº  — |dz  }| dk     o| dz  }|d         |d         z   }t          | ¦  «        } |dz   | t          | ¦  «        z  z   }|dk     r|| |z  z  }t          ||¦  «        }|dz  |z	  }| st          |z  x}}	n#|| z  t	          | ¦  «        z  | dz
  |z  | z   z	  x}}	d}
|	r |	|z  d|
z  |
| z   z  z  |z	  }	||	z  }|
dz  }
|	° |r| }t          || ||¦  «        S )Né2   r   r   r¬   r«   r­   éüÿÿÿ)r±   r   r   r   rK   r   )ro   r²   r£   ÚroundingÚnegaterÈ   r¤   r   r½   r»   r™   s              rV   Úmpf_besseljnrB  •  s0  € ØˆB�J€DØ�ŠUˆ_�q˜1‘u€FØ
ˆAŒ$ˆq�Œt‰)€CÝˆA‰Œ€AØ	�‰�Q•x ‘{”{‘]Ñ	"€BØ
ˆQ‚w€wØ
ˆa�#‰g‰ˆÝ��B‰Œ€AØ
ˆQ‰$�2‰€BØð 4Ý˜2‘ÐˆˆAˆAà�A‘�˜a™œ‘ q¨¡s¨B¡h°¡lÑ3Ð3ˆˆAØ	€AØ
ð Ø�"‰f˜"˜Q™$  !¡™*Ñ%¨"Ñ,ˆØ	ˆQ‰ˆØ	ˆQ‰ˆð ð ð ð ØˆBˆÝ˜˜B˜3  hÑ/Ô/Ð/rU   c                 óÊ  — | dk     o| dz  }t          | ¦  «        } |}|\  }}t          |d         |d         z   |d         |d         z   ¦  «        }|d| t          | ¦  «        z  z   t          |¦  «        z   z  }|dk     r|| |z  z  }t          ||¦  «        }t          ||¦  «        }|dz  |dz  z
  |z	  }	||z  |dz
  z	  }
| st          |z  x}}t
          x}}nTt          ||| ¦  «        \  }}|t          | ¦  «        z  | dz
  |z  | z   z	  x}}|t          | ¦  «        z  | dz
  |z  | z   z	  x}}d}t          |¦  «        t          |¦  «        z   dk    rcd|z  || z   z  }||	z  ||
z  z
  ||	z  ||
z  z   }}||z  |z	  }||z  |z	  }||z  }||z  }|dz  }t          |¦  «        t          |¦  «        z   dk    °c|r| }| }t          || ||¦  «        }t          || ||¦  «        }||fS )Nr   r   r¬   r«   r­   r?  )	r±   rÆ   r   r   r   r   r<   rK   r   )ro   r¢   r£   r@  rA  ÚorigprecrÒ   rÓ   rÈ   r$  r%  rÕ   rÖ   r×   rØ   r  r  r™   r}   s                      rV   Úmpc_besseljnrE  ¬  sI  € Ø�ŠUˆ_�q˜1‘u€FÝˆA‰Œ€AØ€HØ�H€CˆÝ
ˆc�!Œf�S˜”V‰m˜S œV C¨¤F™]Ñ
+Ô
+€CØˆB�•8˜A‘;”;‘Ñ¥ S¡¤Ñ)Ñ)€DØ
ˆQ‚w€wØ��C‘‰ˆÝ
�3˜Ñ
Ô
€CÝ
�3˜Ñ
Ô
€CØ�‰F�S˜!‘V‰O Ñ$€DØ�‰G˜˜a™Ñ €DØð 8Ý˜t‘OÐ#ˆˆcÝÐˆˆcˆcå   c¨1Ñ-Ô-‰ˆˆBØ�4 ™7œ7‘]¨¨1©¨d©
°Q©Ñ7Ð7ˆˆcØ�4 ™7œ7‘]¨¨1©¨d©
°Q©Ñ7Ð7ˆˆcØ	€AÝ
ˆc‰(Œ(•S˜‘X”XÑ
 Ò
!Ð
!Øˆq‰D�!�A‘#‰JˆØ�t‘8˜c $™hÑ&¨¨D©°3°t±8Ñ(;ˆSˆØ�a‰x˜DÑ ˆØ�a‰x˜DÑ ˆØˆs‰
ˆØˆs‰
ˆØ	ˆQ‰ˆõ ˆc‰(Œ(•S˜‘X”XÑ
 Ò
!Ð
!ð ð ØˆdˆØˆdˆÝ	�c˜D˜5 (¨HÑ	5Ô	5€BÝ	�c˜D˜5 (¨HÑ	5Ô	5€BØ�ˆ8€OrU   c                 óŠ  — | \  }}}}|\  }}	}
}|s|rt          d¦  «        ‚|r|	sl| t          k    s|t          k    rt          S | t          k    r|t          k    rt          S t          S |t          k    r| t          k    rt          S t          S t          S |dz   }||z   }|
|z   }||z
  }t	          |¦  «        }|dk    rl|dk    rIt          t          | ||¦  «        d¦  «        t          t          | ||¦  «        |¦  «        }} |dz  }|dk    °I| \  }}}}|\  }}	}
}||z   }|
|z   }||z
  }t          ||¦  «        }t          ||¦  «        }d}|dk     r| }n	|dk    r| }|r t          | |¦  «        } t          ||¦  «        }t          | |¦  «        }t          ||¦  «        }t          |||¦  «        }t          || |z
  ||¦  «        S )z^
    Computes the arithmetic-geometric mean agm(a,b) for
    nonnegative mpf values a, b.
    zagm of a negative numberr­   rÄ   r  r¬   r   iøÿÿÿ)r
   r   r   r   r±   r&   r   r+   r(   ry   rÆ   r   r6   r   )rï   rð   r£   r³   rñ   rò   ró   rô   rõ   rö   r÷   rø   r¤   rù   rú   Ú	mag_deltaÚabs_mag_deltaÚmin_magÚmax_magro   ÚafÚbfÚgs                          rV   Úmpf_agmrN  Ð  s  € ð
 Ñ€Eˆ4��sØÑ€Eˆ4��sØð 8�ð 8ÝÐ6Ñ7Ô7Ð7àð �Tð Ø•Š9ˆ9˜�Tš	˜	ÝˆKØ•Š9ˆ9Ø•EŠzˆzÝ�ÝˆKØ•Š9ˆ9Ø•EŠzˆzÝ�ÝˆKåˆØ	�‰€BØ�‰8€DØ�‰8€DØ�t‘€Iå˜	‘N”N€MØ�rÒÐØ˜bÒ Ð Ý�W Q q¨™_œ_¨RÑ0Ô0Ý�  1 R™œ¨Ñ,Ô,ð ˆAà˜aÑˆMð ˜bÒ Ð ð "#Ñˆˆt�T˜3Ø!"Ñˆˆt�T˜3Ø�C‰xˆØ�C‰xˆØ˜4‘Kˆ	õ �$�t‰nŒn€GÝ�$�t‰nŒn€GØ	€Aà�‚|€|ØˆHˆˆà	�2ŠˆØˆHˆØð Ý�a˜‰OŒOˆÝ�a˜‰OŒOˆå	�!�R‰Œ€BÝ	�!�R‰Œ€BÝ�"�b˜"ÑÔ€AÝ˜˜B˜3˜q™5 $¨Ñ,Ô,Ð,rU   c                 ó0   — t          t          | ||¦  «        S )z\
    Computes the arithmetic-geometric mean agm(1,a) for a nonnegative
    mpf value a.
    )rN  r   ©rï   r£   r³   s      rV   Úmpf_agm1rQ    s   € õ
 •4˜˜D #Ñ&Ô&Ð&rU   c                 óŒ  — t          | ¦  «        st          |¦  «        rt          t          fS t          | |fv rt          t          fS t	          | ¦  «        |k    rt          t          fS |dz   }t          t          | dz   ¦  «        }	 t          t          | ||¦  «        d¦  «        }t          t          | ||¦  «        |¦  «        }||}} t          t          | d¦  «        t          |d¦  «        g¦  «        d         }t          t          | |d¦  «        d¦  «        }	|t          k    st          |	t          ||¦  «        ¦  «        r| S ŒÀ)z‚
    Complex AGM.

    TODO:
    * check that convergence works as intended
    * optimize
    * select a nonarbitrary branch
    r­   rÄ   r   r  )rD   r   rE   r   r;   r&   r   rC   rA   rF   r:   r#   rG   r8   r    r(   )
rï   rð   r£   r³   r¤   ÚepsÚa1Úb1r¸   Úerrs
             rV   Úmpc_agmrW    s.  € õ �QÑÔð �=¨Ñ+Ô+ð Ý•TˆzÐÝ�A�q�6ÐÐÝ•eˆ|ÐÝˆq�z„z�Q‚€Ý•eˆ|ÐØ	ˆb‰€BÝ
•D˜2˜#˜b™&Ñ
!Ô
!€CðÝ•w˜q ! RÑ(Ô(¨"Ñ-Ô-ˆÝ•g˜a  BÑ'Ô'¨Ñ,Ô,ˆØ�2ˆ1ˆÝ�G A b™MœM­7°1°R©=¬=Ð9Ñ:Ô:¸1Ô=ˆÝ•g˜a  BÑ'Ô'¨Ñ,Ô,ˆØ•5Š=ˆ=�F 3­°°TÑ(:Ô(:Ñ;Ô;ˆ=ØˆHðrU   c                 ó0   — t          t          | ||¦  «        S r    )rW  r7   rP  s      rV   Úmpc_agm1rY  ,  s   € Ý•7˜A˜t SÑ)Ô)Ð)rU   c                 ó–  — | d         sH| t           k    rt          t          ||¦  «        d¦  «        S | t          k    rt           S | t          k    r| S | t
          k    rt          S |dz   }t          t          t
          | |¦  «        |¦  «        }t          ||¦  «        }t          t          |¦  «        |||¦  «        }t          |d¦  «        S )Nr   r  é   )r   r&   r/   r   r   r   r   r+   r'   rQ  r)   )r²   r£   r³   r¤   rï   ré   r  s          rV   Ú
mpf_ellipkr\  /  s¹   € ØˆQŒ4ð Ø•Š:ˆ:Ý�V D¨#Ñ.Ô.°Ñ3Ô3Ð3Ø•Š:ˆ:ÝˆLØ•Š9ˆ9ØˆHØ�D‚y€yÝˆð 
�‰€Bõ 	•�˜q "Ñ%Ô% rÑ*Ô*€AÝ��B‰Œ€AÝ•�r‘
”
˜A˜t SÑ)Ô)€AÝ�Q˜ÑÔÐrU   c                 óp  — | \  }}|t           k    r?|t          k    rt          S t          |t          ¦  «        rt          |||¦  «        t           fS |dz   }t          t          t          | |¦  «        |¦  «        }t          ||¦  «        }t          t          |¦  «        |||¦  «        }t          |d¦  «        S )Nr[  r  )r   r   rE   r!   r   r\  rF   r8   r7   rY  rH   r/   rC   )	r¢   r£   r³   r  r  r¤   rï   ré   r  s	            rV   Ú
mpc_ellipkr^  C  s¥   € Ø�F€BˆØ	�U‚{€{Ø•Š:ˆ:ÝˆOÝ�"•dÑÔð 	4Ý˜b $¨Ñ,Ô,­eÐ3Ð3Ø	�‰€BÝ•� ! RÑ(Ô(¨"Ñ-Ô-€AÝ��B‰Œ€AÝ•F˜2‘J”J  4¨Ñ-Ô-€AÝ�Q˜ÑÔÐrU   c                 óè  — | \  }}}}|sZ| t           k    rt          t          ||¦  «        d¦  «        S | t          k    rt          S | t
          k    r| S | t          k    rt          ‚| t          k    rt          S |dz   }||z   }|| k     rt          t          ||¦  «        d¦  «        S t          |d¦  «        |z
  }	t          t          |	¦  «        }
t          | d|z  ¦  «        }t          t          | |
¦  «        d|z  ¦  «        }t          t          ||¦  «        |	 ¦  «        }t          t          | ¦  «        }t          |t          | d¦  «        |¦  «        }t          |t          ||¦  «        ||¦  «        S )Nr  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}   ÚhÚKÚKhÚKdiffr»   rð   s                   rV   Ú
mpf_elliperd  P  sY  € ð Ñ€Dˆ#ˆs�BØð  Ø•Š:ˆ:Ý�V D¨#Ñ.Ô.°Ñ3Ô3Ð3Ø•Š:ˆ:ÝˆKØ•Š9ˆ9ØˆHØ•Š9ˆ9ÝÐØ�D‚y€yÝˆØ	ˆb‰€BØ
ˆb‰&€CØ
ˆbˆS‚y€yÝ�  cÑ*Ô*¨BÑ/Ô/Ð/åˆC�‰Œ�bÑ€AÝ•$˜ÑÔ€AÝ�1�a˜‘dÑÔ€AÝ	•G˜A˜q‘M”M 1 R¡4Ñ	(Ô	(€BÝ•g˜a ‘n”n q bÑ)Ô)€EÝ•�aÑÔ€AÝ�•y  1‘~”~ rÑ*Ô*€AÝ�1•g˜a ‘m”m T¨3Ñ/Ô/Ð/rU   c                 ó¢  — | \  }}|t           k    rF|t          k    rt           t          fS t          |t          ¦  «        rt	          |||¦  «        t           fS |dz   }t          | d¦  «        }t          |d         |d         z   d¦  «        |z
  }t          t          |¦  «        }t          | d|z  ¦  «        }	t          t          | |d|z  ¦  «        d|z  ¦  «        }
t          t          |
|	|¦  «        | ¦  «        }t          t          | |¦  «        }t          |t          | d¦  «        |¦  «        }t          |t          |	||¦  «        ||¦  «        S )Nr[  r   r¬   r«   r   )r   r   r!   r   rd  rG   rÆ   r&   r^  r>   rC   r8   r7   r:   rA   )r¢   r£   r³   r  r  r¤   rÈ   r}   r`  ra  rb  rc  r»   rð   s                 rV   Ú
mpc_elliperf  n  s2  € Ø�F€BˆØ	�U‚{€{Ø•Š:ˆ:Ý�4�=Ð Ý�"•dÑÔð 	4Ý˜b $¨Ñ,Ô,­eÐ3Ð3Ø	�‰€BÝ
�!�Q‰-Œ-€CÝˆC�ŒF�3�q”6‰M˜1ÑÔ Ñ"€AÝ•$˜ÑÔ€AÝ�1�a˜‘dÑÔ€AÝ	•K  1 a¨¡dÑ+Ô+¨Q¨r©TÑ	2Ô	2€BÝ•g˜b ! RÑ(Ô(¨1¨"Ñ-Ô-€EÝ•˜˜BÑÔ€AÝ�•y  1‘~”~ rÑ*Ô*€AÝ�1•g˜a  BÑ'Ô'¨¨sÑ3Ô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/   r0   r1   r2   r3   r4   r5   r6   Úlibmpcr7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   Ú	gammazetarL   rM   rN   Ú	ExceptionrP   r›   r¿   rÂ   rÌ   rÏ   rÙ   rÜ   rá   rì   rÿ   r  r  r  r!  r'  r2  r4  r6  r:  r<  rB  rE  rN  rQ  rW  rY  r\  r^  rd  rf  rT   rU   rV   ú<module>rp     s{  ððð ð €€€Ø €€€à >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >à Ð Ð Ð Ð Ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ð	ð 	ð 	ð 	ð 	�Iñ 	ô 	ð 	ð	ðs$ð s$ð s$ðl ˆfÒÐð!ð !ð !ð. $ð &+ð &+ð &+ð &+ðZð ð ð %ð %ð %ð %ð %ð\ð ð ð
ð 
ð 
ð	ð 	ð 	ðð ð ð( # uð (ð (ð (ð (ðT # uð ?ð ?ð ?ð ?ðB #ð &ð &ð &ð &ð #ð &ð &ð &ð &ð  *°ð tð tð tð tðl ð  ð  ð  ð":ð :ð :ð :ð> &¨Qð [ð [ð [ð [ðz #ð )ð )ð )ð )ð
 #ð )ð )ð )ð )ð #ð ð ð ð ð #ð !ð !ð !ð !ðP '1ð 0ð 0ð 0ð 0ð. '1ð "ð "ð "ð "ðH 'ð 9-ð 9-ð 9-ð 9-ðv %ð 'ð 'ð 'ð 'ð 'ð ð ð ð ð4 %ð *ð *ð *ð *ð 'ð ð ð ð ð( 'ð ð ð ð ð 'ð 0ð 0ð 0ð 0ð< 'ð 4ð 4ð 4ð 4ð 4ð 4rU   