403Webshell
Server IP : 93.86.61.54  /  Your IP : 216.73.216.156
Web Server : Apache/2.4.62 (Ubuntu)
System : Linux rasin.ddns.net 6.8.0-124-generic #124~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 21:05:19 UTC x86_64
User : www-data ( 33)
PHP Version : 8.4.22
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3/dist-packages/mpmath/libmp/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/mpmath/libmp/__pycache__/libhyper.cpython-310.pyc
o

�"`��@s�dZddlZddlZddlmZmZmZmZmZddl	m
Z
ddlmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm 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/m0Z0ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m-Z-m9Z9ddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNdd	l	mOZOdd
lPmQZQmRZRmSZSGdd�deT�ZU	d
d�ZVedkr�dd�ZVe
fdd�ZWdd�ZXe
fdd�ZYdd�ZZdd�Z[dd�Z\dd�Z]e
dfd d!�Z^e
dfd"d#�Z_e
fd$d%�Z`e
fd&d'�Zae
dfd(d)�ZbdMd*d+�ZcdMd,d-�Zde
d.fd/d0�Zee
fd1d2�Zfe
fd3d4�Zge
fd5d6�Zhe
fd7d8�Zie
fd9d:�Zje
fd;d<�Zke
fd=d>�Zle
fd?d@�Zme
fdAdB�Zne
fdCdD�Zoe
fdEdF�Zpe
fdGdH�Zqe
fdIdJ�Zre
fdKdL�ZsdS)Nz�
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@seZdZdS)�
NoConvergenceN)�__name__�
__module__�__qualname__�rRrR�7/usr/lib/python3/dist-packages/mpmath/libmp/libhyper.pyrN+srNc Csx|\}}}}d�|�}d|||d|�||d�|f}d|v}|dk}|p'|}	g}
|
j}g}g}
g}g}g}g}g}g}|d�|d�|d�|d�|	rS|d	�|rf|d
�|d�|d�|d
�n|d�|d�|d�|d�|d�|d�|d�|r�|d�|d�|d�|d�|d�t|�D]�\}}ddg||k}|dkr�||g||k�|�|d|||f�q�|dkr�|
|g||k�|�|d|||||f�q�|dk�r||g||k�|�|d|�|d�|d�|d�|d||f�|d�|d ||f�q�|dk�rr||g||k�|�|d!|�|d"�|d�|d#�|d
�|d�|d�|d$||f�|d�|d%||f�|d�|d�|d&||f�|d�|d'||f�q�t�t|�}t|�}t||�}||d�}||d�}|d(�|d)�|d*�|	�r�|d+�|d,�d-�d.d/�|D�d0d/�|
D�d1d/�|D��}d-�d2d/�|D�d3d/�|D�d4d/�|
D�d5g�}|�r�|d6|�|d7|�|d8�|�r�|d9�|d:�|d;�|	�r�t|�D]}|d<||||f��q|D]
}|d=�d>t|����q|D]
}|d?�d>t|����q"t|�D]}|d@||||f��q4|D]
}|dA�d>t|����qF|D]
}|dB�d>t|����qV|�r�|�rw|dC�|dD�|dE�n!|dF�|dG�n|�r�|dH�|dD�|dE�n|dI�|dJ�|D]}|dK�d>t|���|dD�|dE��q�|D]5}|dL�d>t|���|dM�d>t|���|dN�d>t|���|dO�d>t|���|dP�d>t|����q�n@t|�D]}|d<||||f��q�|D]
}|d=�d>t|����q�|D]
}|d?�d>t|����q|�r%|dQ�n|dI�|	�r=|dR�|dS�|dT�|dU�n|dR�|dV�|dU�|dW�|dX�|D]
}|dY�d>t|����qS|D]
}|dZ�d>t|����qc|
D]
}|d[�d>t|����qs|D]
}|d\�d>t|����q�|D]
}|d]�d>t|����q�|D]
}|d^�d>t|����q�|D]
}|d_�d>t|����q�|D]
}|d`�d>t|����q�|	�r|da�|db�|dc�|dd�|de�|df�|dg�|dh�|di�|d�|dj�|dk�n|da�|dc�|dl�|d�|dj�|dm�dn�dodp�|
D��}
dq||
}
i}t	|
t
�|�|
||fS)rz�
    Returns a function that sums a generalized hypergeometric series,
    for given parameter types (integer, rational, real, complex).

    �zhypsum_%i_%i_%s_%s_%sN�Cz$MAX = kwargs.get('maxterms', wp*100)zHIGH = MPZ_ONE<<epsshiftzLOW = -HIGHz!SRE = PRE = one = (MPZ_ONE << wp)zSIM = PIM = MPZ_ZEROzxsign, xm, xe, xbc = z[0]zif xsign: xm = -xmzysign, ym, ye, ybc = z[1]zif ysign: ym = -ymzxsign, xm, xe, xbc = zzoffset = xe + wpzif offset >= 0:z    ZRE = xm << offsetzelse:z    ZRE = xm >> (-offset)zoffset = 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_zxsign, xm, xe, xbc = __rezysign, ym, ye, ybc = __imz    %sCRE_%i = xm << offsetz    %sCRE_%i = xm >> (-offset)z    %sCIM_%i = ym << offsetz    %sCIM_%i = ym >> (-offset)zfor 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 * cS�g|]
}d�dt|���qS)zAINT_#�#��replace�str��.0�irRrRrS�
<listcomp>��z%make_hyp_summator.<locals>.<listcomp>cSr[)zAP_#r\r]r`rRrRrSrc�rdcSr[)zBQ_#r\r]r`rRrRrSrc�rdcSr[)zBINT_#r\r]r`rRrRrSrc�rdcSr[)zBP_#r\r]r`rRrRrSrc�rdcSr[)zAQ_#r\r]r`rRrRrSrc�rd�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')zif 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+1zreturn (a, b), True, magnz    magn = a[2]+a[3]zreturn a, False, magn�
css�|]}d|VqdS)z    NrR)ra�linerRrRrS�	<genexpr>+s�z$make_hyp_summator.<locals>.<genexpr>zBdef %s(coeffs, z, prec, wp, epsshift, magnitude_check, **kwargs):
)�join�append�	enumerate�
ValueError�len�min�ranger^r_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�bcomplexrb�flag�W�l_areal�l_breal�cancellable_real�noncancellable_real_num�noncancellable_real_den�
multiplier�divisor�k�	namespacerRrRrS�make_hyp_summator@sr
"



�����(  (  


�(  

        
r��sagecs4ddlm�|\���������fdd�}d|fS)z�
        Returns a function that sums a generalized hypergeometric series,
        for given parameter types (integer, rational, real, complex).
        r)�hypsum_internalcs�����|||||||�S�NrR)�coeffs�z�prec�wp�epsshift�magnitude_check�kwargs�r�rrrtrsrurRrS�_hypsum?s
�z"make_hyp_summator.<locals>._hypsumz(none))�sage.libs.mpmath.ext_mainr�)rqr�rRr�rSr�8scCsx|\}}}}|s|tkrtS|tkrtS|tkrtStS||}tj}|dkrDd|dd||d�krD|r=ttd||�Sttd||�S||kr`t	|d�}t
t|d�|d�}	t||	||�S|t
|�d}
t
t||
��}|||
?}|dd}
}}|r�|||
?|}|d|d}|d@r�|
|8}
n|
|7}
|d7}|s|
|
d>tt|
�|
�}
|r�|
}
t|
|
||�S)	N��rgW������?r��i90)rrrrrr�math�logr#r%r*r.r(�absrr)r1r)�xr��rnd�sign�man�exp�bc�size�lg�cr��t�t2�s�termr�rRrRrS�mpf_erfOs@"


�r�cCs t|�}|dd|krdSdS)Nr��
ףp=
�?TF)r)r�r�rerRrRrS�erfc_check_series|sr�cCs�|\}}}}|s|tkrtS|tkrtS|tkrtStS|d}||}|tdd|�7}|p2|dk}	|	s:t||�se|	rKttt	||dt
|�||�St|�d}
ttt	||t|
dd�d�||�St
|>}}d}
dt||�d|?}d}	|d|d|>|}|dkr�||
ks�|s�n|d@r�||8}n||7}|}
|d7}q{||>tt|�|�}t|||�}ttt|||�|�|�}tt|||�|||�}|S)Nr�rr��
rr��)rrrrrr�maxr�r&r�rr�intrrr)r1rr/r$r'r()r�r�r�r�r�r�r�r��mag�regular_erfrer�r��	term_prevr�r�r��yrRrRrS�mpf_erfc�sD(
�r�cCs<|}}d}|r|||?|}|||7}|d7}|s|S�Nr�rrR)r�r�r�r�r�rRrRrS�	ei_taylor�s�r�c	Cs�t}|}}|}}d}||�||�dkrI||||||?||||||?}}|||7}|||7}|d7}||�||�dks||fS)Nr��r)r�)	�zre�zimr��_abs�sre�tre�sim�timr�rRrRrS�complex_ei_taylor�s2�r�cCsPt|>}||>|}}||}d}|r&||||?}||7}|d7}|s|Sr�)r)r�r��oner�r�r�rRrRrS�
ei_asymptotic�s�r�c
Cs�t}t|>}|||||?}||>|}}||>|}}	||}
|}d}||�||	�dkrh|||	|||?|||	|||?}}	|
|7}
||	7}|d7}||kr^t�||�||	�dks3|
|fS)Nr�i�r)r�rrN)
r�r�r�r�r��M�xrer��ximr�r�r�r�rRrRrS�complex_ei_asymptotic�s"2�r�FcCsp|rt|�}|\}}}}|r|s|tkrtStd��|r�d|||f}||}	|d}
|	|
k}|sH|dkr9||>}n||?}|t|
d�dk}|rn|	|
krQt}
nttt||
�|
�|
�}
t	|
t
||
�|
�}
t|
|||�}
nB|
dtt|��7}
t||
�}t
||
�t|
�}
t|
|
�}t||
�}t||||�}
n|tkr�t}
n|tkr�t}
n	|tkr�t}
nt}
|r�t|
�}
|
S)NzE1(x) for x < 0rr��V-�?r�r�)r$rrr	r�rrr�rr'r/r(rr�rMr0rrr)r�r�r��e1r�r�r�r��xabs�xmagr��
can_use_asymp�xabsint�v�u�t1r�rRrRrS�mpf_ei�sH



r�cCs�|rt|�}|\}}|\}}}}	|\}
}}}
|tkr?|r7tt|||��}|s1tt||��}||fSt}||fSt|||�tfS|tkrK|rG|sKttfS|d}||	}||
}t||�}||k}|sxtt|��tt|��}|t	|d�dk}zo|r�||kr�t
tf}nt||�}t||�}t|||�\}}t
||�t
||�f}t|t||�|�}t|||�}|r�t|||�}|WS|\}}|
r�t|||�t|t|�||�f}|WSt|||�t|t|�||�f}|WSWn	ty�Ynw|dt	tt|d���7}t||�}t||�}t|||�\}}|t|�7}t
||�t
||�f}|�r-tt|�|�}nt||�}t||||�}|�r@t|�}|S)N�(r�r�r�r�)r:rr$r�r.rr�r�rr�rrr�rr9rIr<rr&rrNrFr�rMr?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�rRrRrS�mpc_eisz�



����


r�cC�t|||d�S�NT)r��r�r�r�rRrRrS�mpf_e1O�r�cCr�r�)r�r�rRrRrS�mpc_e1Rr�r�c Cs�|\}}}}|sM|r*|tkr|dkrtdfSt|||�dfS|tkr&tdfSttfS|tkrA|dkr=td|d||�dfStdfS|tkrItdfSttfS|}	|rUd|}|d}
||}|dkrct�tt|��}|dkon|}
t|�}|dks�d|||
kr�|r�t	||
�}t
|t||	d|
�||�}�nrt	||
�}t||||�}�ndd|
|ko�dkn}|s�tt
|��}ttd||�d|
�}||||tt||��||d|d	}|
d
}||k}|�rFt|
|
>t||
�}|}||}t|
>}|�r|�r||7}|d7}||||
?}|�r|�s	t	||
�}|�r4t
|t||	d|
�|
�}nt|||
�}t
|t||
�||�}n�|dk�rTtt|||��}n�|dk�r|d|
k�rtt||
��}|�rt|	d@�rst|�}nt
|t||d|
�|
�}t||
�}}dg|d}td|d�D]
}||d|||<�q�|ddd�}|d|
>}td|d�D]}|d@�r�||||8}n||||7}|||
?}�q�t||
|
�}t
|t	||
��}|�r�t
|t||	|
�|
�}t||�}t|tt|d��||�}nt�|
�rDtt|d��}|�r-tt|
�|||�}|	d@�r)t|�}||fStt
t|
�t||	d|
�|
�|||�}||fS|dfS)
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

    rNrr�i����r������dr�r����)rrrKrr�NotImplementedErrorr
r�r$r/r'r,r(rrnr�rrrr�rorrrJr.) rer�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��T2rZr��imrRrRrS�
mpf_expintUs�


6
�


�


&�rcCs�t||�}|||?}|dkrdt|>d}}}n||d}}}|r=||||d|?}|||7}|d7}|s%t||�S)z2
    0 - Ci(x) - (euler+log(x))
    1 - Si(x)
    rr�r�r)rrr)r�r��which�x2r�r�r�rRrRrS�mpf_ci_si_taylor�s
�r	cCs�|dr
|d|d}n|dr|d|d}|dr(t||d|d�}|dks1||kr3t�|d|7}t||�}t||�}|||||?}d|||?}|}	|}
t|>}|dkrpddt|>ddf\}}
}	}
}n||||df\}}
}	}
}tt|	�t|
��dkr�||d}|	||
|||?|	||
|||?}	}
||	|7}|
|
|7}
|d7}tt|	�t|
��dks�t||�t|
|�fS)Nrr�r����r)r�r�rrr�r)r�rr�rr�r�r��z2re�z2imr�r�r�r�r�r��frRrRrS�mpc_ci_si_taylor�s6

2�rr�cCs|d}|\}}}}d\}	}
|sF|tkrttfS|tkr ||fSt}	|dkrB|tkr2tt||�d�}
|tkrBttt|t|�d��}
|	|
fS||}||krv|dkr\t|d|||�}
|dkrrt	|�}t
|�}
t|t|
|�||�}	|	|
fS||kr�|dkr�|r�tt|t|��}
nt||�}
t|
d�}
|dkr�t
t||�|||�}	|	|
fS|t|�7}|dt�|d�k}|s�|dkr�tt||d�||�}
|dkr�t||d�}	t|	t	|�|�}	t|	tt
|�|�||�}	|	|
fSt
|�}t||�}td|>|}t|>}|}|}d}|�r,|}||||?}|d7}||7}||||?}|d7}||7}|�st||�}t||�}t
|||�}t
|||�}t||�\}}|dk�rttt||�t||�|�}
ttt|�d�|
|�}
|�rnt|
�}
t|
||�}
|dk�r�tt||�t||�||�}	|	|
fS)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�)NNrr�rr�)rrrrr%r.r$rr#rLrrr0r(r4r�r�r�rr	rrrr2r'r&)r�r�r�rr�r�r�r�r��ci�sir�r�r��
asymptotic�xf�xr�s1�s2r�r��cos�sinrRrRrS�	mpf_ci_si�s�




�

rcCs"t|�dkrt�t|||d�dS)Nr)rr	rr�rRrRrS�mpf_ciXsrcCst|||d�dS)Nr)rr�rRrRrS�mpf_si]src	Cs�|\}}|tkr"t|||d�d}t|�dkr|t||�fS|tfS|d}t|||d�\}}t|t|�|�}t||ft||�||�}|S)Nrr�)	rrrr.rrrLr@r?)	r�r�r�r�rrr��cre�cimrRrRrS�mpc_ci`srcCsH|\}}|tkrt|||d�dtfS|d}t|||d�}t|||�S)Nrr�)rrrrA)r�r�r�r�rr�rRrRrS�mpc_simsrcCs�|d7}|dko|d@}|d|d}t|�}|d|t|�}|dkr,|||8}t||�}|d|?}|s@t|>}}	n||t|�|d||?}}	d}
|	rn|	|d|
|
||?}	||	7}|
d7}
|	sV|rs|}t||||�S)N�2rrr�r�r����)r�r
rrrJr)rer�r��rounding�negater�r�rr�r�r�rRrRrS�mpf_besseljn�s*
$�r#cCs�|dko|d@}t|�}|}|\}}t|d|d|d|d�}|d|t|�t|�7}|dkr;|||8}t||�}t||�}|d|d|?}	|||d?}
|sdt|>}}t}
}n(t|||�\}}|t|�|d||?}}|t|�|d||?}
}d}t|�t|�dkr�d|||}||	||
||	||
}}|||?}|||?}||7}|
|7}
|d7}t|�t|�dks�|r�|}|
}
t||||�}t|
|||�}||fS)Nrrr�r�r�r )	r�r�r
rrrr;rJr)rer�r�r!r"�origprecr�r�r�rrr�r�r�r�r�rr�rrrRrRrS�mpc_besseljn�sD"


  "�r%cCs�|\}}}}|\}}	}
}|s|rtd��|r|	s<|tks |tkr"tS|tkr.|tkr,tStS|tkr:|tkr8tStStS|d}||}
|
|}|
|}t|�}|dkr�|dkrstt|||�d�tt|||�|�}}|d}|dksX|\}}}}|\}}	}
}||}
|
|}|
|}t	|
|�}t
|
|�}d}|dkr�|}n|dkr�|}|r�t||�}t||�}t||�}t||�}t|||�}t
|||||�S)z^
    Computes the arithmetic-geometric mean agm(a,b) for
    nonnegative mpf values a, b.
    zagm of a negative numberr�r�r�r�ri����)r	rrrr�r%rr*r'rnr�rr5r)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��	mag_delta�
abs_mag_delta�min_mag�max_magre�af�bf�grRrRrS�mpf_agm�s^��





r-cC�tt|||�S)z\
    Computes the arithmetic-geometric mean agm(1,a) for a nonnegative
    mpf value a.
    )r-r�r�r�r�rRrRrS�mpf_agm1sr0c
Cs�t|�st|�rttfSt||fvrttfSt|�|kr ttfS|d}tt|d�}	tt|||�d�}t	t
|||�|�}||}}tt|d�t|d�g�d}tt
||d�d�}	|tksgt|	t||��ri|Sq-)z�
    Complex AGM.

    TODO:
    * check that convergence works as intended
    * optimize
    * select a nonarbitrary branch
    r�r�rr�)rCrrDrr:r%rrBr@rEr9r"rFr7rr')
r�r�r�r�r��eps�a1�b1r��errrRrRrS�mpc_agms"	
�r5cCr.r�)r5r6r/rRrRrS�mpc_agm1,r�r6cCs�|ds|tkrtt||�d�S|tkrtS|tkr|S|tkr"tS|d}ttt||�|�}t	||�}t
t|�|||�}t|d�S)Nrr��)rr%r.rrrrr*r&r0r()r�r�r�r�r�r�rrRrRrS�
mpf_ellipk/s

r8c	Csv|\}}|tkr|tkrtSt|t�rt|||�tfS|d}ttt||�|�}t	||�}t
t|�|||�}t|d�S)Nr7r�)
rrrDr rr8rEr7r6r6rGr.rB)	r�r�r�r�rr�r�r�rrRrRrS�
mpc_ellipkCs


r9cCs�|\}}}}|s&|tkrtt||�d�S|tkrtS|tkr |S|tkr&t�|tkr,tS|d}||}||krAtt||�d�St|d�|}	tt|	�}
t	|d|�}t	t
||
�d|�}tt
||�|	�}
t
t|�}t|
t|d�|�}t|t||�||�S)Nr�r�rr�r)
rr%r.rrrr	rr�r8r&r'r)r�r�r�r�r�r�r�r�r�rr�h�K�Kh�Kdiffr�r�rRrRrS�
mpf_ellipePs0


r>cCs�|\}}|tkr|tkrttfSt|t�rt|||�tfS|d}t|d�}t|d|dd�|}tt|�}t|d|�}	tt	||d|�d|�}
t
t|
|	|�|�}tt||�}t
|t
|d�|�}
t
|t|	|
|�||�S)Nr7rr�r�r)rrr rr>rFr�r%r9r=rBr7r6r9r@)r�r�r�r�rr�r�rrr:r;r<r=r�r�rRrRrS�
mpc_ellipens 


r?)r)t�__doc__�operatorr��backendrrrrr�
libintmathr�libmpfr	r
rrr
rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-�	libelefunr.r/r0r1r2r3r4r5�libmpcr6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFrGrHrIrJ�	gammazetarKrLrM�	ExceptionrNr�r�r�r�r�r�r�r�r�r�r�r�rr	rrrrrrr#r%r-r0r5r6r8r9r>r?rRrRrRrS�<module>sZ�,X
w-.	*A
v
]
($;


Youez - 2016 - github.com/yon3zu
LinuXploit