
    [hk                        S r SSKJr  SSKJrJrJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.  SSK/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7  SSK8J9r9J:r:J;r;J<r<  S r=\\4r>\\4r?S r@S rAS	 rBS
 rCS rDS rESKS jrFSKS jrGS rHS rIS rJSKS jrKSKS jrLS rMS rNSKS jrOSKS jrPS rQS rRS rSS rTS rUS rVS rWS rXS  rYS! rZS" r[S# r\S$ r]S% r^S& r_S' r`S( raS) rbSLS* jrcS+ rdS, reSKS- jrfS. rgS/ rhS0 riS1 rjS2 rkS3 rlS4 rmS5 rnS6 roS7 rpS8 rqS9 rrS: rsS; rtS< ru\" S=5      rv\" S>5      rw\v\w4rx\" S?5      ry\" S@5      rzSA r{SKSB jr|SKSC jr}SD r~SE rSF rSG rSH rSI rgJ)Mz3
Computational functions for interval arithmetic.

   )xrange)+ComplexResult
round_downround_upround_floorround_ceilinground_nearestprec_to_dpsrepr_dpsdps_to_precbitcount
from_floatfnanfinffninffzerofhalffonefnonempf_signmpf_ltmpf_lempf_gtmpf_gempf_eqmpf_cmpmpf_min_max	mpf_floorfrom_intto_intto_strfrom_strmpf_absmpf_negmpf_posmpf_addmpf_submpf_mulmpf_mul_intmpf_div	mpf_shiftmpf_pow_intfrom_man_expMPZ_ONE)mpf_logmpf_expmpf_sqrtmpf_atan	mpf_atan2mpf_pimod_pi2mpf_cos_sin)	mpf_gamma
mpf_rgammampf_loggammampc_loggammac                 `    U u  p#[        U5      S-   nS[        X$5      < S[        X45      < S3$ )N   [z, ])r
   r!   )sprecsasbdpss        K/var/www/auris/envauris/lib/python3.13/site-packages/mpmath/libmp/libmpi.pympi_strrE      s+    FB
d
a
C&/::    c                 
    X:H  $ N r?   ts     rD   mpi_eqrL   )   	    6MrF   c                 
    X:g  $ rH   rI   rJ   s     rD   mpi_nerO   ,   rM   rF   c                 X    U u  p#Uu  pE[        X45      (       a  g[        X%5      (       a  gg NTF)r   r   r?   rK   rA   rB   tatbs         rD   mpi_ltrU   /   )    FBFBb~~db~~erF   c                 X    U u  p#Uu  pE[        X45      (       a  g[        X%5      (       a  gg rQ   )r   r   rR   s         rD   mpi_lerX   6   rV   rF   c                     [        X5      $ rH   )rU   rJ   s     rD   mpi_gtrZ   =       %rF   c                     [        X5      $ rH   )rX   rJ   s     rD   mpi_ger]   >   r[   rF   c                     U u  p4Uu  pV[        X5U[        5      n[        XFU[        5      nU[        :X  a  [        nU[        :X  a  [
        nXx4$ rH   )r&   r   r   r   r   r   	r?   rK   r@   rA   rB   rS   rT   abs	            rD   mpi_addrb   @   I    FBFBk*Am,ADye!Dyd!4KrF   c                     U u  p4Uu  pV[        X6U[        5      n[        XEU[        5      nU[        :X  a  [        nU[        :X  a  [
        nXx4$ rH   )r'   r   r   r   r   r   r_   s	            rD   mpi_subre   I   rc   rF   c                 ,    U u  p#[        X2U[        5      $ rH   )r'   r   r?   r@   rA   rB   s       rD   	mpi_deltarh   R   s    FB24**rF   c                 @    U u  p#[        [        X#U[        5      S5      $ )N)r+   r&   r	   rg   s       rD   mpi_midrk   V   s    FBWRT=92>>rF   c                 P    U u  p#[        X![        5      n[        X1[        5      nXE4$ rH   )r%   r   r   r?   r@   rA   rB   r`   ra   s         rD   mpi_posrn   Z   (    FB+&A-(A4KrF   c                 P    U u  p#[        X1[        5      n[        X![        5      nXE4$ rH   )r$   r   r   rm   s         rD   mpi_negrq   `   ro   rF   c                 j   U u  p#[        U5      n[        U5      nUS:  a#  [        X![        5      n[        X1[        5      nXg4$ US:  aH  [        n[        U5      n[        X5      (       a  [        X1[        5      nXg4$ [        X[        5      n Xg4$ [        X1[        5      n[        X![        5      nXg4$ N    )r   r%   r   r   r   r$   r   )	r?   r@   rA   rB   sassbsr`   ra   negsas	            rD   mpi_absrx   f   s    FB
2,C
2,C
axBk*Bm, 4K 
%-0A 4K ]3A
 4K Bk*Bm,4KrF   c                     [        XU4U5      $ rH   )mpi_mulr?   rK   r@   s      rD   mpi_mul_mpfr|   }       1!fd##rF   c                     [        XU4U5      $ rH   )mpi_divr{   s      rD   mpi_div_mpfr      r}   rF   c                    U u  p4Uu  pV[        U5      n[        U5      n[        U5      n	[        U5      n
Xxs=:X  a  S:X  a/  O  O,U[        :X  d
  U[        :X  a  [        [        4$ [        [        4$ Xs=:X  a  S:X  a/  O  O,U[        :X  d
  U[        :X  a  [        [        4$ [        [        4$ US:  a  U	S:  aE  [	        X5U[
        5      n[	        XFU[        5      nU[        :X  a  [        nU[        :X  a  [        nX4$ U
S::  aE  [	        XEU[
        5      n[	        X6U[        5      nU[        :X  a  [        nU[        :X  a  [        nX4$ [	        XEU[
        5      n[	        XFU[        5      nU[        :X  a  [        nU[        :X  a  [        nX4$ US::  a  U	S:  aE  [	        X6U[
        5      n[	        XEU[        5      nU[        :X  a  [        nU[        :X  a  [        nX4$ U
S::  aE  [	        XFU[
        5      n[	        X5U[        5      nU[        :X  a  [        nU[        :X  a  [        nX4$ [	        X6U[
        5      n[	        X5U[        5      nU[        :X  a  [        nU[        :X  a  [        nX4$ [	        X55      [	        X65      [	        XE5      [	        XF5      /n[        U;   a  [        [        pX4$ [        U5      u  p[        X[
        5      n[        X[        5      nX4$ rs   )
r   r   r   r   r(   r   r   r   r   r%   )r?   rK   r@   rA   rB   rS   rT   ru   rv   tastbsr`   ra   casess                 rD   rz   rz      s   FBFB
2,C
2,C
2,C
2,C
Q;"*$;e|
Q;"*$;e|
ax!8k2Am4ADye!Dyd!V 4KS AXk2Am4ADye!Dye!J 4KE k2Am4ADye!Dyd!> 4K= 
!8k2Am4ADye!Dye!0 4K- AXk2Am4ADye!Dyd!$ 4K k2Am4ADye!Dyd! 4K '"/72?GBOT5=4q
 4K u%DA-A/A4KrF   c                 X   U u  p#[        U[        5      (       a%  [        X"U[        5      n[        X3U[        5      nXE4$ [        U[        5      (       a%  [        X3U[        5      n[        X"U[        5      nXE4$ [        U5      n[        X#/5      u  p#[        n[        X3U[        5      nXE4$ rH   )r   r   r(   r   r   r   r$   r   rm   s         rD   
mpi_squarer      s    FBb%BD+.BD-0 4K 
E		BD+.BD-0 4K	 R[bX&BD-04KrF   c                    U u  p4Uu  pV[        U5      n[        U5      n[        U5      n	[        U5      n
Xxs=:X  a  S:X  a3  O  O0U	S:  a  U
S:  d  U	S:X  d  U
S:X  a  [        [        4$ [        [        4$ U	S:  a  U
S:  a  [        [        4$ U	S:  a  [	        [        U 5      [        U5      U5      $ U	S:X  ag  US:  a  US:  a  [        [        4$ X:X  a  [        [        4$ US:  a  [        X6U[        5      n[        nUS::  a  [        n[        XFU[        5      nWW4$ US:  aE  [        X6U[        5      n[        XEU[        5      nU[        :X  a  [        nU[        :X  a  [        nX4$ US::  aE  [        X5U[        5      n[        XFU[        5      nU[        :X  a  [        nU[        :X  a  [        nX4$ [        X5U[        5      n[        XEU[        5      nU[        :X  a  [        nU[        :X  a  [        nX4$ rs   )
r   r   r   r   r   rq   r*   r   r   r   )r?   rK   r@   rA   rB   rS   rT   ru   rv   r   r   r`   ra   s                rD   r   r      s   FBFB
2,C
2,C
2,C
2,C
Q!GaSAX$;e| Qw37d{
Qwwqz71:t44 ax7sQw$;:$;!8k2AA!8Am4A, a4K# !8k2Am4ADye!Dyd! 4K AXk2Am4ADye!Dye! 4K	 k2Am4ADye!Dyd!4KrF   c                 H    [        U [        5      n[        U [        5      nX4$ rH   )r4   r   r   )r@   r`   ra   s      rD   mpi_pir     s!    t[!At]#A4KrF   c                 P    U u  p#[        X![        5      n[        X1[        5      nXE4$ rH   )r0   r   r   rm   s         rD   mpi_expr     (    FB+&A-(A4KrF   c                 P    U u  p#[        X![        5      n[        X1[        5      nXE4$ rH   )r/   r   r   rm   s         rD   mpi_logr     r   rF   c                 P    U u  p#[        X![        5      n[        X1[        5      nXE4$ rH   )r1   r   r   rm   s         rD   mpi_sqrtr   $  s(    FB;'A=)A4KrF   c                 P    U u  p#[        X![        5      n[        X1[        5      nXE4$ rH   )r2   r   r   rm   s         rD   mpi_atanr   +  s(    FB;'A=)A4KrF   c           	      ~   U u  p4US:  a%  [        [        [        4[        X* US-   5      U5      $ US:X  a  [        [        4$ US:X  a  U $ US:X  a  [        X5      $ US-  (       a%  [	        X1U[
        5      n[	        XAU[        5      nXV4$ [        U5      n[        U5      nUS:  a%  [	        X1U[
        5      n[	        XAU[        5      nXV4$ US::  a%  [	        XAU[
        5      n[	        X1U[        5      nXV4$ [        n[        U5      n[        X45      (       a  [	        X1U[        5      nXV4$ [	        XAU[        5      nXV4$ Nrt      r      )r   r   mpi_pow_intr   r,   r   r   r   r   r$   r   )	r?   nr@   rA   rB   r`   ra   ru   rv   s	            rD   r   r   1  s@   FB1ud|[BR%@$GGAvd|AvAv!""1ut[1t]3, 4K' rlrl!8B45AB47A 4K AXB45AB47A 4K ABb~~t]; 4K  t];4KrF   c                 
   Uu  p4X4:X  aS  U[         [        4;  aC  U[        [        U5      5      :X  a  [	        U [        U5      U5      $ U[
        :X  a  [        X5      $ [        XS-   5      n[        XQUS-   5      n[        Xb5      $ Nr   )
r   r   r   r    r   r   r   r   rz   r   )r?   rK   r@   rS   rT   uvs          rD   mpi_powr   V  sx    FB	xBtUm+&*%%q&*d33;A$$"9AdRi A1rF   c                 *    [        X5      (       a  U $ U$ rH   )r   xys     rD   MINr   a      a||HrF   c                 *    [        X5      (       a  U $ U$ rH   )r   r   s     rD   MAXr   f  r   rF   c                     U u  p#pEU [         :X  a  [        [         S4$ [        X5      u  pg[        X4XE-   S5      u  pn
U(       a  SU	-
  n	XgU	4$ )Nrt      rj   )r   r   r6   r5   )r   wpsignmanexpbccr?   rK   r   wp_s              rD   cos_sin_quadrantr   k  sT    DsEzUA~qDA#&"-IA#qD7NrF   c                 4  ^^^ U u  p#X#s=:X  a
  [         :X  a  O  O[        [        4[         [         44$ [        U ;   d
  [        U ;   a  [        [        4[        [        44$ TS-   n[        X$5      u  pVn[        X45      u  pn
[        XX/5      u  pX[        Xi/5      u  piXz:X  a  OzX-
  S:  a  [        [        4[        [        44$ US-  U
S-  :w  a  [        nUS-
  S-  U
S-
  S-  :w  a  [        nUS-
  S-  U
S-
  S-  :w  a  [        n	US-
  S-  U
S-
  S-  :w  a  [        n[        [        U-  [        S-  -   U* 5      m[        [        U-  [        S-  -
  U* 5      mUUU4S jnU" U[        5      nU" U[        5      nU" U[        5      nU" U	[        5      n	XX4Xi44$ )Nr      r   r      
   c                    > [        U S   5      U[        :H  :X  a  TnOTn[        XT	U5      n U u  p4pVXV-   S:  a  U(       a  [        $ [        $ U $ )Nrt   r   )boolr   r(   r   r   )
r   roundingpr   r   r   r   lessmorer@   s
          rD   finalizempi_cos_sin.<locals>.finalize  sU    !:(k12AAA$)36Q;KrF   )r   r   r   r   r   r   r   r-   r.   r   r   )r   r@   r`   ra   r   carA   nacbrB   nbr   r   r   s    `          @@rD   mpi_cos_sinr   v  s   DAd|eU^++	uzt}udm++	B!!(JBB!!(JBB""FB""FB	x	At}udm++ q5BE>BqD19A	!BqD19A	!BqD19A	!B""5s;D""5s;D 
"k	"B	"m	$B	"k	"B	"m	$B7RGrF   c                     [        X5      S   $ rs   r   r   r@   s     rD   mpi_cosr         q""rF   c                     [        X5      S   $ Nr   r   r   s     rD   mpi_sinr     r   rF   c                 :    [        XS-   5      u  p#[        X2U5      $ r   r   r   r   r@   cossins       rD   mpi_tanr         12g&HC3T""rF   c                 :    [        XS-   5      u  p#[        X#U5      $ r   r   r   s       rD   mpi_cotr     r   rF   c                    US-   n[        X[        5      n[        X[        5      n[        X[        5      n[        U[        5      (       d   eU(       aH  [        [        [        U5      [        U5      5      X[        5      n[        U[        S5      U[        5      n[        XQU[        5      n[        XaU[        5      nXx4$ )Nr   d   )r"   r   r   r   r   r(   r   r#   r*   r   r'   r&   )	r   r   percentr@   r   xaxbr`   ra   s	            rD   mpi_from_str_a_br     s    	B	!	%B	!	'B&A!UCWR[11-HAx}b-8t[)At]+A4KrF   c                    [        SU -  5      nU R                  SS5      n US-   nSU ;   a   U R                  S5      u  pE[        XESU5      $ SU ;   ai  U S   S:X  d  S	U ;  a  UeU R                  S	S5      n SnS
U ;   a  U S   S
:w  a  UeSnU R                  S
S5      n U R                  S5      u  pE[        XEXa5      $ SU ;   a  SU ;  d  SU ;  a  UeU S   S:X  aZ  U R                  SS5      n U R                  SS5      n U R                  S5      u  px[	        Xq[
        5      n[	        X[        5      nXx4$ U R                  S5      u  pEUR                  S5      u  pYSU ;   a  U	R                  S5      u  pOU	R                  S5      Sp)[	        XE-   U-   U[
        5      n[	        XI-   U-   U[        5      nXx4$ [	        X[
        5      n[	        X[        5      nXx4$ )a  
Parse an interval number given as a string.

Allowed forms are

"-1.23e-27"
    Any single decimal floating-point literal.
"a +- b"  or  "a (b)"
    a is the midpoint of the interval and b is the half-width
"a +- b%"  or  "a (b%)"
    a is the midpoint of the interval and the half-width
    is b percent of a (`a   imes b / 100`).
"[a, b]"
    The interval indicated directly.
"x[y,z]e"
    x are shared digits, y and z are unequal digits, e is the exponent.

z&Improperly formed interval number '%s'  r   +-F(rt   )%rj   T,r=   r>   e)
ValueErrorreplacesplitr   r"   r   r   rstrip)
r?   r@   r   r   r   r   r   r`   ra   zs
             rD   mpi_from_strr     s   & 	;a?@A			#rA	Bqywwt}eT22	Q43;#Q,GIIc2!8u|G		#r"Awws|g44	qLclGQ43;		#r"A		#r"A773<DA+.A-0A4K 773<DA773<DAaxwws|1xx}b1Qk2AQm4A4KQk*Qm,trF   c           	      <   [        U5      nUS-   nU u  p[        X5      n[        X5      n[        X40 UD6n[        X40 UD6n[        X40 UD6nSnU(       a  SnUu  nnUS:X  a'  [        [	        US5      U40 UD6nUU-   S-   U-   U-   nU$ US:X  a`  U[
        :X  a  [
        nO5[        U[        S5      5      n[        U[        U[        S	5      5      U5      nUU-   S
-   [        UU5      -   S-   nU$ US:X  a  UU-   S-   U-   U-   U-   nU$ US:X  Ga~  X:X  a  [        XS-   40 UD6n[        XS-   40 UD6nUR                  S5      n	[        U	5      S:X  a  U	R                  S5        UR                  S5      n
[        U
5      S:X  a  U
R                  S5        U	S   U
S   :X  a  U	S   U
S   :w  a  [        [        U	S   5      S-   5       H  nU	S   U   U
S   U   :w  d  M    O   U	S   SW U-   U	S   US -   S-   U-   U
S   US -   U-   S[        [        U	S   5      S5      -  -   U	S   -   nU$ U	S   U-   U-   S[        [        U	S   5      S5      -  -   U	S   -   n U$ USR                  U	5      -   S-   U-   SR                  U
5      -   U-   n U$ [        SU-  5      e)aO  
Convert a mpi interval to a string.

**Arguments**

*dps*
    decimal places to use for printing
*use_spaces*
    use spaces for more readable output, defaults to true
*brackets*
    pair of strings (or two-character string) giving left and right brackets
*mode*
    mode of display: 'plusminus', 'percent', 'brackets' (default) or 'diff'
*error_dps*
    limit the error to *error_dps* digits (mode 'plusminus and 'percent')

Additional keyword arguments are forwarded to the mpf-to-string conversion
for the components of the output.

**Examples**

    >>> from mpmath import mpi, mp
    >>> mp.dps = 30
    >>> x = mpi(1, 2)._mpi_
    >>> mpi_to_str(x, 2, mode='plusminus')
    '1.5 +- 0.5'
    >>> mpi_to_str(x, 2, mode='percent')
    '1.5 (33.33%)'
    >>> mpi_to_str(x, 2, mode='brackets')
    '[1.0, 2.0]'
    >>> mpi_to_str(x, 2, mode='brackets' , brackets=('<', '>'))
    '<1.0, 2.0>'
    >>> x = mpi('5.2582327113062393041', '5.2582327113062749951')._mpi_
    >>> mpi_to_str(x, 15, mode='diff')
    '5.2582327113062[4, 7]'
    >>> mpi_to_str(mpi(0)._mpi_, 2, mode='percent')
    '0.0 (0.0%)'

r   r   r   	plusminusrj   r   r   r   r   r   z%)bracketsr   diffr   r   r   rt   Nz%'%s' is unknown mode for printing mpi)r   rk   rh   r!   r+   r   r(   r   r*   r   lenappendr   minjoinr   )r   rC   
use_spacesr   mode	error_dpskwargsr@   r   r`   ra   middeltaa_strb_strmid_strspbr1br2	delta_strr?   r   is                          rD   
mpi_to_strr     s   P sD	BDA
!
CaE1$V$E1$V$ES((G	BHC{9U2.>v>	bL4"$y0H HG 
	%<A x}-A734b9AbL39!55<8 H7 
	%K#"U*S04 H3 
>1!e.v.E1!e.v.EKKq6Q;HHRLKKq6Q;HHRLQ41Q4<tqt|AaD	A.AtAw!A$q') / qT"1X^ad12h.4r9AaDHDsJ3s1Q4y!,,-/0t4 H aD3J$s3s1Q4y!+<'<<qtC
 H chhqk!C'",sxx{:S@A H @4GHHrF   c                 B    U u  p4Uu  pV[        X5U5      [        XFU5      4$ rH   )rb   r   r   r@   r`   ra   r   ds          rD   mpci_addr  d  )    DADA1d 333rF   c                 B    U u  p4Uu  pV[        X5U5      [        XFU5      4$ rH   )re   r   s          rD   mpci_subr  i  r  rF   c                 6    U u  p#[        X!5      [        X15      4$ rH   )rq   r   r@   r`   ra   s       rD   mpci_negr  n      DA1WQ---rF   c                 6    U u  p#[        X!5      [        X15      4$ rH   )rn   r  s       rD   mpci_posr
  r  r  rF   c                     U u  p4Uu  pV[        X55      n[        XF5      n[        XxU5      n	[        X65      n
[        XE5      n[        XU5      nX4$ rH   )rz   re   rb   )r   r   r@   r`   ra   r   r   r1r2rei1i2ims                rD   mpci_mulr  v  sS    DADA	B	B	t	B	B	B	t	B6MrF   c                    U u  p4Uu  pVUS-   n[        U5      n[        U5      n	[        XU5      n
[        [        X55      [        XF5      U5      n[        [        XE5      [        X65      U5      n[	        XU5      n[	        XU5      nX4$ r   )r   rb   rz   re   r   )r   r   r@   r`   ra   r   r   r   m1m2mr  r  s                rD   mpci_divr    s    DADA	bB	AB	ABbA	wq|R	0B	wq|R	0B		B		B6MrF   c                 z    U u  p#US-   n[        X$5      n[        X45      u  pg[        XVU5      n[        XWU5      nX#4$ r   )r   r   rz   )r   r@   r`   ra   r   rr   r?   s           rD   mpci_expr    sF    DA	bBAqDAdAdA4KrF   c                 6    U u  p#[        X!5      [        X15      4$ rH   )r+   )r   r   r`   ra   s       rD   	mpi_shiftr    s    DAQ>9Q>))rF   c                     US-   n[        X5      n[        [        X25      n[        X4U5      n[	        X4U5      n[        US5      n[        US5      nXV4$ )Nr   rj   )r   r   mpi_onerb   re   r  )r   r@   r   e1e2r   r?   s          rD   mpi_cosh_sinhr!    sW    	bB	B	"	!BAA!RA!RA4KrF   c                     U u  p#US-   n[        X$5      u  pV[        X45      u  px[        XWU5      n	[        XhU5      n
U	[        U
5      4$ Nr   )r   r!  rz   rq   r   r@   r`   ra   r   r   r?   chshr  r  s              rD   mpci_cosr'    sP    DA	bBqDA1!FB		B		Bwr{?rF   c                 ~    U u  p#US-   n[        X$5      u  pV[        X45      u  px[        XgU5      n	[        XXU5      n
X4$ r#  )r   r!  rz   r$  s              rD   mpci_sinr)    sI    DA	bBqDA1!FB		B		B6MrF   c                     U u  p#U[         :X  a  [        U5      $ U[         :X  a  [        U5      $ [        U5      n[        U5      n[        X#US-   5      n[	        XA5      $ r   )mpi_zerorx   r   rb   r   )r   r@   r`   ra   rK   s        rD   mpci_absr,    sX    DAH}qzH}qz1A1Ad2gAArF   c                 f   U u  p4Uu  pVX4s=:X  a
  [         :X  a)  O  O&[        U[         5      (       a  [        $ [        U5      $ [        U[         5      (       av  [        U[         5      (       a  [	        X6U[
        5      nO[	        X5U[
        5      n[        U[         5      (       a  [	        XEU[        5      nXx4$ [	        XFU[        5      n Xx4$ [        U[         5      (       aO  [	        X5U[        5      n[        U[         5      (       a  [	        XFU[
        5      nXx4$ [	        X6U[
        5      n Xx4$ [        U[         5      (       aO  [	        XEU[
        5      n[        U[         5      (       a  [	        X6U[        5      nXx4$ [	        XFU[        5      n Xx4$ [        U[        5      n[        U5      nXx4$ rH   )
r   r   r+  r   r3   r   r   r   r4   r$   )	r   r   r@   yaybr   r   r`   ra   s	            rD   	mpi_atan2r0    s|   FBFB	5"eOd|b%"e"$4A"$4A"e"$6A* 4K' "$6A& 4K# 
E		bdM2"e"$4A 4K "$4A 4K 
E		bdK0"e"$6A 4K "$6A
 4K 4'AJ4KrF   c                 "    U u  p#[        X2U5      $ rH   )r0  )r   r@   r   r   s       rD   mpci_argr2    s    DAQ4  rF   c                 V    U u  p#[        [        XS-   5      U5      n[        X5      nXE4$ r   )r   r,  r2  )r   r@   r   r   r  r  s         rD   mpci_logr4    s/    DA	!"W%t	,B	!	B6MrF   c           	         Uu  p4U[         :X  aP  Uu  pVXV:X  aG  Uu  pxpU(       a$  U	S:  a  [        U SU-  [        X-  5      -  U5      $ U[        :X  a  [        U SU5      $ US-   n[	        [        U[        X5      U5      U5      $ )Nrt   rj   r   )r+  mpci_pow_intintr   r  r  r4  )r   r   r@   yreyimr.  r/  r   r   r   r   r   s               rD   mpci_powr:    s    HC
h8!#Dssax#ATzCM'A4HHU{#Aq$//	bBHQ4d;;rF   c                 ~    U u  p#[        [        U5      [        U5      U5      n[        X#U5      n[        US5      nXE4$ r   )re   r   rz   r  )r   r@   r`   ra   r  r  s         rD   mpci_squarer<    s>    DA	A
1t	4B	t	B	2q	B6MrF   c           	      n   US:  a%  [        [        [        4[        X* US-   5      U5      $ US:X  a  [        [        4$ US:X  a  [	        X5      $ US:X  a  [        X5      $ US-   n[        [        4nU(       a4  US-  (       a  [        X@U5      nUS-  n[        X5      n US-  nU(       a  M4  [	        XB5      $ r   )r  r  r+  r6  r
  r<  r  )r   r   r@   r   results        rD   r6  r6    s    1u*LBR,H$OOAv  Av  Av1##	Bx F
q5f,FFA	a ! F!!rF   g#+Vcb?gVcb?gg?c                 X    U u  p#Uu  pE[        XR5      (       a  g[        XC5      (       a  gg)NFT)r   r   )r   r   r`   ra   r   r   s         rD   mpi_overlapr@  &  s)    DADAa||Ea||ErF   c                    U u  p4US-   nUS:X  a  [        [        U [        U5      US5      $ [        U[        5      (       a|  US:X  a#  [        X1[        5      n[        XA[        5      nXg4$ US:X  a#  [        XA[        5      n[        X1[        5      nXg4$ US:X  a   [        X1[        5      n[        XA[        5      nWW4$ [        U[        5      (       a  [        U[        5      (       a|  US:X  a#  [        XA[        5      n[        X1[        5      nXg4$ US:X  a#  [        X1[        5      n[        XA[        5      nXg4$ US:X  a   [        XA[        5      n[        X1[        5      nWW4$ [        U [        U5      nUS:X  a  [        [        XS-   S5      X5      $ US:X  a  [        [        XS-   S5      X5      $ US:X  a&  [        [        XS-   S5      [!        XS-   5      U5      $ WW4$ )Nr   r   rt   r   r   )	mpi_gammarb   r  r   gamma_min_br7   r   r   r8   r9   r   r   gamma_min_ar   rz   re   r   )	r   r@   typer`   ra   r   r   r   znews	            rD   rB  rB  2  s   DA	bBqyGR0$:: a19!;/A!=1A0 4K/ QY1K0A1M2A* 4K) QYQk2AQm4A$ a4K! 
5		fQ4419!;/A!=1A 4K QY1K0A1M2A 4K QYQk2AQm4A a4K	 q'2&19WYt!VQ%?II19WYt!VQ%?II19WYt!VQ%?QRFASUYZZa4KrF   c                 ^   U u  u  p4u  pVXVs=:X  a
  [         :X  a0  O  O-US:w  d  [        U[         5      (       a  [        XU5      [        4$ US-   nUS:w  a}  US   US   -   nUS   US   -   n	U[         :w  a  [	        X5      n
OU	n
[        [        U5      5      n[        [        U5      5      n[	        X5      n[	        SX-  5      nU[        U5      -  nUS:X  a  [        X44[        U5      u  p4X44XV44n Sn[        U[        5      (       a  [        XV4[        [        45      (       a  [        X44[        U5      XV44nUS:X  a  [        [!        XS-   S5      X5      $ US:X  a  [#        [!        XS-   S5      X5      $ US:X  a&  [%        [!        XS-   S5      ['        XS-   5      U5      $ [)        U[         5      (       aI  [+        X64U[,        5      n[+        XE4U[.        5      n[+        X54U[,        5      n[+        XF4U[.        5      nO[1        U[         5      (       aI  [+        X54U[,        5      n[+        XF4U[.        5      n[+        XE4U[,        5      n[+        X64U[.        5      nOz[+        U[         4U[.        5      n[        [3        U5      U5      (       a  [+        X54U[.        5      nO[+        X64U[.        5      n[+        XE4U[,        5      n[+        XF4U[,        5      nUS   US   4US   US   44nUS:X  a  [5        US   U5      [5        US   U5      4$ US:X  a  [7        U5      n[9        UU5      $ )Nr   r   r   rt   r   )r   r   rB  r+  maxabsr    r   rb   r  r   rC  r@  gamma_mono_imag_agamma_mono_imag_br  
mpci_gammar  r  r4  r   r:   r   r   r   r$   rn   r  r  )r   r@   rE  a1a2b1b2r   amagbmagmaganbnabsn
gamma_sizerF  minremaxreminimmaximws                        rD   rL  rL  W  s   GRWb 
5dai6"U+;+;$'11 
bBqy!uRU{!uRU{;d/CC__2{48_

hz"" qy2'7B/bWrg5E b+w!24E FGG B7GR02'9Dqy*T61*Eq!OOqy*T61*Eq!OOqy*T61*ExPQWXRXGY[_!``
 b%bWb+6bWb-8bWb+6bWb-8	E		bWb+6bWb-8bWb+6bWb-8 bZ];'"+r"" ""m<E ""m<EbWb+6bWb+6	q58uQxq22AqyqtT"GAaD$$777qyQKAtrF   c                     [        XSS9$ Nr   rE  rB  r   r@   s     rD   mpi_loggammarb    s    )A!"<<rF   c                     [        XSS9$ r^  rL  ra  s     rD   mpci_loggammare    s    :aA#>>rF   c                     [        XSS9$ Nr   r_  r`  ra  s     rD   
mpi_rgammarh    s    	! ::rF   c                     [        XSS9$ rg  rd  ra  s     rD   mpci_rgammarj    s    A!!<<rF   c                     [        XSS9$ Nr   r_  r`  ra  s     rD   mpi_factorialrm    s    9Q1#==rF   c                     [        XSS9$ rl  rd  ra  s     rD   mpci_factorialro    s    JqQ$??rF   N)rt   )Tz[]r   r   )__doc__backendr   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(   r)   r*   r+   r,   r-   r.   	libelefunr/   r0   r1   r2   r3   r4   r5   r6   	gammazetar7   r8   r9   r:   rE   r+  r  rL   rO   rU   rX   rZ   r]   rb   re   rh   rk   rn   rq   rx   r|   r   rz   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,  r0  r2  r4  r:  r<  r6  rD  rC  	gamma_minrJ  rK  r@  rB  rL  rb  re  rh  rj  rm  ro  rI   rF   rD   <module>rv     s  
              
 I H; 5>, & %+?.$$BH9v
#J	

	2h####@DZx4
4
..
*	
$L!<"& ''+&	t$ sO #JGR = > : < = ?rF   