
    gk                        d 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'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z:m;Z;m<Z< d Z=eefZ>eefZ?d Z@d ZAd	 ZBd
 ZCd ZDd ZEdPdZFdPdZGd ZHd ZId ZJdPdZKdPdZLd ZMd ZNdPdZOdPdZPd ZQd ZRd ZSd ZTd ZUd ZVd ZWd  ZXd! ZYd" ZZd# Z[d$ Z\d% Z]d& Z^d' Z_d( Z`d) Zad* ZbdQd/Zcd0 Zdd1 ZedPd2Zfd3 Zgd4 Zhd5 Zid6 Zjd7 Zkd8 Zld9 Zmd: Znd; Zod< Zpd= Zqd> Zrd? Zsd@ ZtdA Zu edB          Zv edC          ZwevewfZx edD          Zy edE          ZzdF Z{dPdGZ|dPdHZ}dI Z~dJ ZdK ZdL ZdM ZdN ZdOS )Rz3
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                 z    | \  }}t          |          dz   }dt          ||          dt          ||          dS )N   [z, ])r
   r!   )sprecsasbdpss        O/var/www/html/ai-engine/env/lib/python3.11/site-packages/mpmath/libmp/libmpi.pympi_strrE      sB    FB
d

a
CCC&S////::    c                     | |k    S N r?   ts     rD   mpi_eqrL   )       6MrF   c                     | |k    S rH   rI   rJ   s     rD   mpi_nerO   ,   rM   rF   c                 b    | \  }}|\  }}t          ||          rdS t          ||          rdS d S NTF)r   r   r?   rK   rA   rB   tatbs         rD   mpi_ltrU   /   =    FBFBb"~~"ddb"~~#ee4rF   c                 b    | \  }}|\  }}t          ||          rdS t          ||          rdS d S rQ   )r   r   rR   s         rD   mpi_lerX   6   rV   rF   c                 "    t          ||           S rH   )rU   rJ   s     rD   mpi_gtrZ   =       1%rF   c                 "    t          ||           S rH   )rX   rJ   s     rD   mpi_ger]   >   r[   rF       c                     | \  }}|\  }}t          |||t                    }t          |||t                    }|t          k    rt          }|t          k    rt
          }||fS rH   )r&   r   r   r   r   r   	r?   rK   r@   rA   rB   rS   rT   abs	            rD   mpi_addrc   @   ]    FBFBBk**ABm,,ADyye!Dyyd!a4KrF   c                     | \  }}|\  }}t          |||t                    }t          |||t                    }|t          k    rt          }|t          k    rt
          }||fS rH   )r'   r   r   r   r   r   r`   s	            rD   mpi_subrf   I   rd   rF   c                 :    | \  }}t          |||t                    S rH   )r'   r   r?   r@   rA   rB   s       rD   	mpi_deltari   R   s    FB2r4***rF   c                 V    | \  }}t          t          |||t                    d          S )N)r+   r&   r	   rh   s       rD   mpi_midrl   V   s)    FBWRT=992>>>rF   c                 l    | \  }}t          ||t                    }t          ||t                    }||fS rH   )r%   r   r   r?   r@   rA   rB   ra   rb   s         rD   mpi_posro   Z   6    FBD+&&AD-((Aa4KrF   c                 l    | \  }}t          ||t                    }t          ||t                    }||fS rH   )r$   r   r   rn   s         rD   mpi_negrr   `   rp   rF   c                    | \  }}t          |          }t          |          }|dk    r-t          ||t                    }t          ||t                    }n|dk    rTt          }t          |          }t          ||          rt          ||t                    }nCt          ||t                    }n,t          ||t                    }t          ||t                    }||fS Nr^   )r   r%   r   r   r   r$   r   )	r?   r@   rA   rB   sassbsra   rb   negsas	            rD   mpi_absrx   f   s    FB
2,,C
2,,C
axxBk**Bm,,	% 	4D-00AAt]33AA Bk**Bm,,a4KrF   c                 (    t          | ||f|          S rH   )mpi_mulr?   rK   r@   s      rD   mpi_mul_mpfr|   }       1q!fd###rF   c                 (    t          | ||f|          S rH   )mpi_divr{   s      rD   mpi_div_mpfr      r}   rF   c                    | \  }}|\  }}t          |          }t          |          }t          |          }	t          |          }
||cxk    rdk    r5n n2|t          k    s|t          k    rt          t          fS t          t          fS |	|
cxk    rdk    r5n n2|t          k    s|t          k    rt          t          fS t          t          fS |dk    r|	dk    rTt	          |||t
                    }t	          |||t                    }|t          k    rt          }|t          k    rt          }nO|
dk    rTt	          |||t
                    }t	          |||t                    }|t          k    rt          }|t          k    rt          }nt	          |||t
                    }t	          |||t                    }|t          k    rt          }|t          k    rt          }n|dk    r|	dk    rTt	          |||t
                    }t	          |||t                    }|t          k    rt          }|t          k    rt          }n@|
dk    rSt	          |||t
                    }t	          |||t                    }|t          k    rt          }|t          k    rt          }nt	          |||t
                    }t	          |||t                    }|t          k    rt          }|t          k    rt          }nt	          ||          t	          ||          t	          ||          t	          ||          g}t          |v rt          t          }}n>t          |          \  }}t          ||t
                    }t          ||t                    }||fS rt   )
r   r   r   r   r(   r   r   r   r   r%   )r?   rK   r@   rA   rB   rS   rT   ru   rv   tastbsra   rb   casess                 rD   rz   rz      s   FBFB
2,,C
2,,C
2,,C
2,,C
cQ;;"**$;e|
cQ;;"**$;e|
axx!88Bk22ABm44ADyye!Dyyd!AXXBk22ABm44ADyye!Dyye! Bk22ABm44ADyye!Dyyd!	!88Bk22ABm44ADyye!Dyye!AXXBk22ABm44ADyye!Dyyd! Bk22ABm44ADyye!Dyyd!
 R'"b//72r??GBPROOT5==4qAAu%%DAq4--A4//Aa4KrF   c                    | \  }}t          |t                    r/t          |||t                    }t          |||t                    }nt          |t                    r/t          |||t                    }t          |||t                    }nAt          |          }t          ||g          \  }}t          }t          |||t                    }||fS rH   )r   r   r(   r   r   r   r$   r   rn   s         rD   
mpi_squarer      s    FBb% 
1BD+..BD-00	E		 1BD+..BD-00R[[b"X&&BBD-00a4KrF   c                    | \  }}|\  }}t          |          }t          |          }t          |          }	t          |          }
||cxk    rdk    r7n n4|	dk     r|
dk    s|	dk    s|
dk    rt          t          fS t          t          fS |	dk     r|
dk    rt          t          fS |	dk     r+t	          t          |           t          |          |          S |	dk    rx|dk     r|dk    rt          t          fS |	|
k    rt          t          fS |dk    rt          |||t                    }t          }|dk    rt          }t          |||t                    }n|dk    rSt          |||t                    }t          |||t                    }|t          k    rt          }|t          k    rt          }n|dk    rSt          |||t                    }t          |||t                    }|t          k    rt          }|t          k    rt          }nRt          |||t                    }t          |||t                    }|t          k    rt          }|t          k    rt          }||fS rt   )
r   r   r   r   r   rr   r*   r   r   r   )r?   rK   r@   rA   rB   rS   rT   ru   rv   r   r   ra   rb   s                rD   r   r      s/   FBFB
2,,C
2,,C
2,,C
2,,C
cQ!GGaSAXX$;e| Qww377d{
Qwwwqzz71::t444 axx77sQww$;#::$;!88Bk22AA!88ABm44A
 !88Bk22ABm44ADyye!Dyyd!AXXBk22ABm44ADyye!Dyye! Bk22ABm44ADyye!Dyyd!a4KrF   c                 ^    t          | t                    }t          | t                    }||fS rH   )r4   r   r   )r@   ra   rb   s      rD   mpi_pir     s)    t[!!At]##Aa4KrF   c                 l    | \  }}t          ||t                    }t          ||t                    }||fS rH   )r0   r   r   rn   s         rD   mpi_expr     6    FBD+&&AD-((Aa4KrF   c                 l    | \  }}t          ||t                    }t          ||t                    }||fS rH   )r/   r   r   rn   s         rD   mpi_logr     r   rF   c                 l    | \  }}t          ||t                    }t          ||t                    }||fS rH   )r1   r   r   rn   s         rD   mpi_sqrtr   $  s6    FBT;''AT=))Aa4KrF   c                 l    | \  }}t          ||t                    }t          ||t                    }||fS rH   )r2   r   r   rn   s         rD   mpi_atanr   +  s6    FBT;''AT=))Aa4KrF   c           	         | \  }}|dk     r0t          t          t          ft          | | |dz             |          S |dk    rt          t          fS |dk    r| S |dk    rt          | |          S |dz  r/t	          |||t
                    }t	          |||t                    }nt          |          }t          |          }|dk    r/t	          |||t
                    }t	          |||t                    }n|dk    r/t	          |||t
                    }t	          |||t                    }nUt          }t          |          }t          ||          rt	          |||t                    }nt	          |||t                    }||fS Nr^      r      )r   r   mpi_pow_intr   r,   r   r   r   r   r$   r   )	r?   nr@   rA   rB   ra   rb   ru   rv   s	            rD   r   r   1  sw   FB1uud|[QBR%@%@$GGGAvvd|AvvAvv!T"""1u <At[11At]33 rllrll!88B455AB477AAAXXB455AB477AA ABb"~~ <At];;At];;a4KrF   c                 X   |\  }}||k    ri|t           t          fvrY|t          t          |                    k    rt	          | t          |          |          S |t
          k    rt          | |          S t          | |dz             }t          |||dz             }t          ||          S Nr   )
r   r   r   r    r   r   r   r   rz   r   )r?   rK   r@   rS   rT   uvs          rD   mpi_powr   V  s    FB	RxxBtUm++&**%%%%q&**d333;;At$$$4"9A1dRi  A1drF   c                 *    t          | |          r| S |S rH   )r   xys     rD   MINr   a      a|| HrF   c                 *    t          | |          r| S |S rH   )r   r   s     rD   MAXr   f  r   rF   c                     | \  }}}}| t           k    rt          t           dfS t          | |          \  }}t          ||||z   d          \  }}	}
|rd|	z
  }	|||	fS )Nr^      rk   )r   r   r6   r5   )r   wpsignmanexpbccr?   rK   r   wp_s              rD   cos_sin_quadrantr   k  sq    D#sBEzzUA~q"DAqS#b&"--IAq# qDa7NrF   c                    | \  }}||cxk    rt           k    rn nt          t          ft           t           ffS t          | v s	t          | v rt          t          ft          t          ffS dz   }t          ||          \  }}}t          ||          \  }}	}
t          ||g          \  }}t          ||	g          \  }}	||
k    rn|
|z
  dk    rt          t          ft          t          ffS |dz  |
dz  k    rt          }|dz
  dz  |
dz
  dz  k    rt          }|dz
  dz  |
dz
  dz  k    rt          }	|dz
  dz  |
dz
  dz  k    rt          }t          t          |z  t          dz  z   |           t          t          |z  t          dz  z
  |           fd} ||t                    } ||t                    } ||t                    } ||	t                    }	||f||	ffS )Nr      r   r      
   c                     t          | d                   |t          k    k    r}n}t          | |	|          } | \  }}}}||z   dk    r|rt          S t          S | S )Nr^   r   )boolr   r(   r   r   )
r   roundingpr   r   r   r   lessmorer@   s
          rD   finalizezmpi_cos_sin.<locals>.finalize  sn    !::(k122AAAAq$))c3r6Q;; KrF   )r   r   r   r   r   r   r   r-   r.   r   r   )r   r@   ra   rb   r   carA   nacbrB   nbr   r   r   s    `          @@rD   mpi_cos_sinr   v  s   DAqAd|eU^++		uzzt}udm++	B!!R((JBB!!R((JBB"b""FB"b""FB	Rxx	b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r7RGrF   c                 .    t          | |          d         S rt   r   r   r@   s     rD   mpi_cosr         q$""rF   c                 .    t          | |          d         S Nr   r   r   s     rD   mpi_sinr     r   rF   c                 P    t          | |dz             \  }}t          |||          S r   r   r   r   r@   cossins       rD   mpi_tanr     +    1d2g&&HC3T"""rF   c                 P    t          | |dz             \  }}t          |||          S r   r   r   s       rD   mpi_cotr     r   rF   c                    |dz   }t          | |t                    }t          | |t                    }t          ||t                    }t          |t                    sJ |rct          t          t          |          t          |                    ||t                    }t          |t          d          |t                    }t          |||t                    }t          |||t                    }||fS )Nr   d   )r"   r   r   r   r   r(   r   r#   r*   r   r'   r&   )	r   r   percentr@   r   xaxbra   rb   s	            rD   mpi_from_str_a_br     s    	B	!R	%	%B	!R	'	'BB&&A!U 9CWR[[111b-HHAx}}b-88At[))AAt]++Aa4KrF   c                 z   t          d| z            }|                     dd          } |dz   }d| v r*|                     d          \  }}t          ||d|          S d| v r~| d         dk    sd	| vr||                     d	d          } d}d
| v r&| d         d
k    r|d}|                     d
d          } |                     d          \  }}t          ||||          S d| v r*d| vsd| vr|| d         dk    rt|                     dd          } |                     dd          } |                     d          \  }}t	          ||t
                    }t	          ||t                    }||fS |                     d          \  }}|                    d          \  }}	d| v r|	                    d          \  }	}n|	                    d          d}}	t	          ||z   |z   |t
                    }t	          ||	z   |z   |t                    }||fS t	          | |t
                    }t	          | |t                    }||fS )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(r^   )%rk   T,r=   r>   e)
ValueErrorreplacesplitr   r"   r   r   rstrip)
r?   r@   r   r   r   r   r   ra   rb   zs
             rD   mpi_from_strr     sG   & 	;a?@@A			#rA	Bqyywwt}}11eT222	Q43;;#Q,,GIIc2!88u||G		#r""Awws||11gt444	qLLcllGQ43;;		#r""A		#r""A773<<DAqD+..AD-00Aa4K 773<<DAq773<<DAqaxxwws||11xx}}b11Qk22A1Qm44Aa4KQk**Qm,,!trF   T[]bracketsr   c           	         t          |          }|dz   }| \  }	}
t          | |          }t          | |          }t          |	|fi |}t          |
|fi |}t          ||fi |}d}|rd}|\  }}|dk    r,t          t	          |d          |fi |}||z   dz   |z   |z   }n|dk    rz|t
          k    rt
          }nIt          |t          d                    }t          |t          |t          d	                    |          }||z   d
z   t          ||          z   dz   }n'|dk    r||z   dz   |z   |z   |z   }n|dk    r||k    r"t          |	|dz   fi |}t          |
|dz   fi |}|	                    d          }	t          |	          dk    r|	                    d           |	                    d          }
t          |
          dk    r|
                    d           |	d         |
d         k    r|	d         |
d         k    rt          t          |	d                   dz             D ]"}|	d         |         |
d         |         k    r n#|	d         d|         |z   |	d         |d         z   dz   |z   |
d         |d         z   |z   dt          t          |	d                   d          z  z   |	d         z   }n|	d         |z   |z   dt          t          |	d                   d          z  z   |	d         z   }nJ|d                    |	          z   dz   |z   d                    |
          z   |z   }nt          d|z            |S )a  
    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   	plusminusrk   r   r   r   r   r   z%)r   r   diffr   r   r   r^   Nz%'%s' is unknown mode for printing mpi)r   rl   ri   r!   r+   r   r(   r   r*   r   lenappendr   minjoinr   )r   rC   
use_spacesr   mode	error_dpskwargsr@   r   ra   rb   middeltaa_strb_strmid_strspbr1br2	delta_strr?   r   is                          rD   
mpi_to_strr     s   P sD	BDAq
!T

CaE1c$$V$$E1c$$V$$ES#((((G	B HC{9U2..>>v>>	bL4"$y0			%<<AA x}}--A7344b99AbL39!5!55<			%K#"U*S0	E>>1c!e..v..E1c!e..v..EKKq66Q;;HHRLLLKKq66Q;;HHRLLLQ41Q4<<tqt||AaD		A..  AtAw!A$q')) *qT"1"X^ad122h.4r9AaDHDsJ3s1Q4yy!,,,-/0t4 aD3J$s3s1Q4yy!+<+<'<<qtCchhqkk!C'",sxx{{:S@AA@4GHHHHrF   c                 Z    | \  }}|\  }}t          |||          t          |||          fS rH   )rc   r   r   r@   ra   rb   r   ds          rD   mpci_addr  d  7    DAqDAq1a1d 3 333rF   c                 Z    | \  }}|\  }}t          |||          t          |||          fS rH   )rf   r   s          rD   mpci_subr  i  r  rF   c                 L    | \  }}t          ||          t          ||          fS rH   )rr   r   r@   ra   rb   s       rD   mpci_negr  n  *    DAq1dWQ----rF   c                 L    | \  }}t          ||          t          ||          fS rH   )ro   r  s       rD   mpci_posr
  r  r  rF   c                     | \  }}|\  }}t          ||          }t          ||          }t          |||          }	t          ||          }
t          ||          }t          |
||          }|	|fS rH   )rz   rf   rc   )r   r   r@   ra   rb   r   r   r1r2rei1i2ims                rD   mpci_mulr  v  ss    DAqDAq	1B	1B	Bt		B	1B	1B	Bt		Br6MrF   c                 ~   | \  }}|\  }}|dz   }t          |          }t          |          }	t          ||	|          }
t          t          ||          t          ||          |          }t          t          ||          t          ||          |          }t	          ||
|          }t	          ||
|          }||fS r   )r   rc   rz   rf   r   )r   r   r@   ra   rb   r   r   r   m1m2mr  r  s                rD   mpci_divr    s    DAqDAq	bB	AB	AB2bA	1wq||R	0	0B	1wq||R	0	0B	Q		B	Q		Br6MrF   c                     | \  }}|dz   }t          ||          }t          ||          \  }}t          |||          }t          |||          }||fS r   )r   r   rz   )r   r@   ra   rb   r   rr   r?   s           rD   mpci_expr    s_    DAq	bB2Aq"DAq1dA1dAa4KrF   c                 L    | \  }}t          ||          t          ||          fS rH   )r+   )r   r   ra   rb   s       rD   	mpi_shiftr    s&    DAqQq>>9Qq>>))rF   c                     |dz   }t          | |          }t          t          ||          }t          |||          }t	          |||          }t          |d          }t          |d          }||fS )Nr   rk   )r   r   mpi_onerc   rf   r  )r   r@   r   e1e2r   r?   s          rD   mpi_cosh_sinhr!    sr    	bB	BB	"b	!	!BBABA!RA!RAa4KrF   c                     | \  }}|dz   }t          ||          \  }}t          ||          \  }}t          |||          }	t          |||          }
|	t          |
          fS Nr   )r   r!  rz   rr   r   r@   ra   rb   r   r   r?   chshr  r  s              rD   mpci_cosr'    sl    DAq	bBq"DAq1b!!FB	B		B	B		Bwr{{?rF   c                     | \  }}|dz   }t          ||          \  }}t          ||          \  }}t          |||          }	t          |||          }
|	|
fS r#  )r   r!  rz   r$  s              rD   mpci_sinr)    se    DAq	bBq"DAq1b!!FB	B		B	B		Br6MrF   c                     | \  }}|t           k    rt          |          S |t           k    rt          |          S t          |          }t          |          }t          |||dz             }t	          ||          S r   )mpi_zerorx   r   rc   r   )r   r@   ra   rb   rK   s        rD   mpci_absr,    sp    DAqH}}qzzH}}qzz1A1A1d2gAAtrF   c                    | \  }}|\  }}||cxk    rt           k    r.n n+t          |t                     rt          S t          |          S t          |t                     rt          |t                     rt	          |||t
                    }nt	          |||t
                    }t          |t                     rt	          |||t                    }nt	          |||t                    }nt          |t                     r\t	          |||t                    }t          |t                     rt	          |||t
                    }nt	          |||t
                    }nt          |t                     r\t	          |||t
                    }t          |t                     rt	          |||t                    }n<t	          |||t                    }n$t          |t                    }t          |          }||fS rH   )
r   r   r+  r   r3   r   r   r   r4   r$   )	r   r   r@   yaybr   r   ra   rb   s	            rD   	mpi_atan2r0    s   FBFB	R5"e 	Od||b% "e 	5"b$44AA"b$44A"e 	7"b$66AA"b$66AA	E		 b"dM22"e 	5"b$44AA"b$44AA	E		 	b"dK00"e 	7"b$66AA"b$66AA 4''AJJa4KrF   c                 .    | \  }}t          |||          S rH   )r0  )r   r@   r   r   s       rD   mpci_argr2    s    DAqQ4   rF   c                 v    | \  }}t          t          | |dz             |          }t          | |          }||fS r   )r   r,  r2  )r   r@   r   r   r  r  s         rD   mpci_logr4    s@    DAq	!T"W%%t	,	,B	!T		Br6MrF   c           	      @   |\  }}|t           k    r]|\  }}||k    rR|\  }}}	}
|r-|	dk    r't          | d|z  t          ||	z            z  |          S |t          k    rt          | d|          S |dz   }t	          t          |t          | |          |          |          S )Nr^   rk   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B88!#D#sB Isaxx#ATzCSMM'A4HHHU{{#Aq$///	bBHQB44d;;;rF   c                     | \  }}t          t          |          t          |          |          }t          |||          }t          |d          }||fS r   )rf   r   rz   r  )r   r@   ra   rb   r  r  s         rD   mpci_squarer<    sQ    DAq	A
1t	4	4B	At		B	2q		Br6MrF   c           	         |dk     r0t          t          t          ft          | | |dz             |          S |dk    rt          t          fS |dk    rt	          | |          S |dk    rt          | |          S |dz   }t          t          f}|r2|dz  rt          || |          }|dz  }t          | |          } |dz  }|2t	          ||          S r   )r  r  r+  r6  r
  r<  r  )r   r   r@   r   results        rD   r6  r6    s    1uu*LQBR,H,H$OOOAvv  Avv4   Avv1d###	Bx F
 q5 	fa,,FFA2	a   FD!!!rF   g#+Vcb?gVcb?gg?c                 b    | \  }}|\  }}t          ||          rdS t          ||          rdS dS )NFT)r   r   )r   r   ra   rb   r   r   s         rD   mpi_overlapr@  &  s=    DAqDAqa||!EEa||!EE4rF   c                    | \  }}|dz   }|dk    r%t          t          | t          |          |d          S t          |t                    r|dk    r.t          ||t                    }t          ||t                    }n|dk    r.t          ||t                    }t          ||t                    }n|dk    r,t          ||t                    }t          ||t                    }nft          |t                    rt          |t                    r|dk    r.t          ||t                    }t          ||t                    }n|dk    r-t          ||t                    }t          ||t                    }n|dk    r,t          ||t                    }t          ||t                    }nt          | t          |          }|dk    r#t          t          ||dz   d          | |          S |dk    r#t          t          ||dz   d          | |          S |dk    r4t          t          ||dz   d          t!          | |dz             |          S ||fS )Nr   r   r^   r   r   )	mpi_gammarc   r  r   gamma_min_br7   r   r   r8   r9   r   r   gamma_min_ar   rz   rf   r   )	r   r@   typera   rb   r   r   r   znews	            rD   rB  rB  2  s+   DAq	bBqyyGR00$::: a [199!T;//A!T=11AAQYY1dK00A1dM22AAQYYQk22AQm44A	5		 [fQ44 [199!T;//A!T=11AAQYY1dK00A1dM22AAQYYQk22AQm44A q'2&&199WYtT!VQ%?%?DIII199WYtT!VQ%?%?DIII199WYtT!VQ%?%?DQRFASASUYZZZa4KrF   c                 "   | \  \  }}\  }}||cxk    rt           k    r6n n3|dk    st          |t                     rt          | ||          t          fS |dz   }|dk    r|d         |d         z   }|d         |d         z   }	|t           k    rt	          ||	          }
n|	}
t          t          |                    }t          t          |                    }t	          ||          }t	          d||
z            }|t          |          z  }|dk    r%t          ||ft          |          \  }}||f||ff} d}t          |t                    rt          ||ft          t          f          rt          ||ft          |          ||ff}|dk    r#t          t!          ||dz   d          | |          S |dk    r#t#          t!          ||dz   d          | |          S |dk    r4t%          t!          ||dz   d          t'          | |dz             |          S t)          |t                     rbt+          ||f|t,                    }t+          ||f|t.                    }t+          ||f|t,                    }t+          ||f|t.                    }nt1          |t                     rat+          ||f|t,                    }t+          ||f|t.                    }t+          ||f|t,                    }t+          ||f|t.                    }nt+          |t           f|t.                    }t          t3          |          |          rt+          ||f|t.                    }nt+          ||f|t.                    }t+          ||f|t,                    }t+          ||f|t,                    }|d         |d         f|d         |d         ff}|dk    r,t5          |d         |          t5          |d         |          fS |dk    rt7          |          }t9          ||          S )Nr   r   r   r^   r   )r   r   rB  r+  maxabsr    r   rc   r  r   rC  r@  gamma_mono_imag_agamma_mono_imag_br  
mpci_gammar  r  r4  r   r:   r   r   r   r$   ro   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   GRWb 
R5daii6"U+;+;iD$''11 
bBqyy!uRU{!uRU{;;dD//CCC____2r{{48__

hz""" qyy2b'7B//BbWr"g5E b+ a2w!24E FGG 
	a Br7GR002b'9Dqyy*T461*E*Eq$!O!OOqyy*T461*E*Eq$!O!OOqyy*T461*E*ExPQRVWXRXGYGY[_!`!``
 b% 7bWb+66bWb-88bWb+66bWb-88	E		 7bWb+66bWb-88bWb+66bWb-88 bZ];;'"++r"" 	= "R"m<<EE "R"m<<EbWb+66bWb+66	q58uQxq22AqyyqtT""GAaD$$7$777qyyQKKAtrF   c                 &    t          | |d          S Nr   rE  rB  r   r@   s     rD   mpi_loggammarb    s    )At!"<"<"<<rF   c                 &    t          | |d          S r^  rL  ra  s     rD   mpci_loggammare    s    :aA#>#>#>>rF   c                 &    t          | |d          S Nr   r_  r`  ra  s     rD   
mpi_rgammarh    s    	!T : : ::rF   c                 &    t          | |d          S rg  rd  ra  s     rD   mpci_rgammarj    s    At!!<!<!<<rF   c                 &    t          | |d          S Nr   r_  r`  ra  s     rD   mpi_factorialrm    s    9Q1#=#=#==rF   c                 &    t          | |d          S rl  rd  ra  s     rD   mpci_factorialro    s    Jq$Q$?$?$??rF   N)r^   )Tr   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]   rc   rf   ri   rl   ro   rr   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 H H H H H H H H H H; ; ; 5>,         & % % % % %      + + +? ? ?        .$ $ $$ $ $B B B BH   9 9 9v  
        # # #J	 	 	  
  
	 	 	2 2 2h# # ## # ## # ## # #  @ @ @DZ Z Z Zx4 4 4
4 4 4
. . . .. . .
 
 
    * * *	 	 	    
 
 
$ $ $L! ! !  < < <  " " "& j''j''+&	Jt$$ JsOO   # # # #JG G G GR = < < > > > : : : < < < = = = ? ? ? ? ?rF   