
    "`;C                        d dl Z ddl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(m)Z)m*Z*m)Z)m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 eefZ2ddl3m4Z4 e5jl                  Z7d Z8 G d	 d
e5      Z9 G d de5      Z:d Z; e;ee%      \  e9_<        e9_=        e:_<        e:_=         e;ee&      \  e9_>        e9_?        e:_>        e:_?         e;ee'      \  e9_@        e9_A        e:_@        e:_A         e;ee(      \  e9_B        e9_C        e:_B        e:_C         e;e!e)      \  e9_D        e9_E        e:_D        e:_E        e9j                  e9_F        e9j                  e9_G        e:j                  e:_F        e:j                  e:_G         G d de9      ZH G d de4      ZI	 d dlJZJeJj                  j                  e:       eJj                  j                  e9       y# eN$ r Y yw xY w)    N   )libmp)
basestring),	int_typesMPZ_ONEprec_to_dpsdps_to_precrepr_dpsround_floorround_ceilingfzerofinffninffnanmpf_lempf_negfrom_int
from_floatfrom_strfrom_rationalmpi_mid	mpi_deltampi_strmpi_absmpi_posmpi_negmpi_addmpi_submpi_mulmpi_divmpi_pow_intmpi_powmpi_from_strmpci_posmpci_negmpci_addmpci_submpci_mulmpci_divmpci_powmpci_absr*   mpci_expmpci_logComplexResultmpf_hashmpc_hash)_matrix)StandardBaseContextc                     t        | d      r| j                  S t        | t              rt	        | ||      S t        | t
              rt        | ||      S t        | t              rt        | ||      S t        )N_mpf_)
hasattrr4   
isinstancer   r   floatr   r   r   NotImplementedError)xprecroundings      //usr/lib/python3/dist-packages/mpmath/ctx_iv.pyconvert_mpf_r=      sb    q'177N!YD((C!C!UJq$$AA!Z !T8)D"D
    c                      e Zd ZdZd dZd Zd Zd Zd Zd Z	e
d        Ze
d	        Zd
 Ze
d        Ze
d        Ze
d        Ze
d        Ze
d        Zd ZeZeZeZeZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd!dZ y)"ivmpfzH
    Interval arithmetic class. Precision is controlled by iv.prec.
    c                 8    | j                   j                  |      S N)ctxconvert)clsr9   s     r<   __new__zivmpf.__new__+   s    wwq!!r>   c                 R    | j                   \  }}||k(  r | ||            S t        rB   )_mpi_
ValueError)selfrE   	f_convertabs        r<   castz
ivmpf.cast.   s+    zz16y|$$r>   c                 J    | j                  t        t        j                        S rB   )rN   intr   to_intrJ   s    r<   __int__zivmpf.__int__4   s    yyell++r>   c                 J    | j                  t        t        j                        S rB   )rN   r7   r   to_floatrR   s    r<   	__float__zivmpf.__float__7   s    yy//r>   c                 J    | j                  t        t        j                        S rB   )rN   complexr   rU   rR   s    r<   __complex__zivmpf.__complex__:   s    yy%..11r>   c                 j    | j                   \  }}||k(  rt        |      S t        | j                         S rB   )rH   r/   hashrJ   rL   rM   s      r<   __hash__zivmpf.__hash__=   s/    zz16A;

##r>   c                     | S rB    rR   s    r<   realz
ivmpf.realD   s    Kr>   c                 .    | j                   j                  S rB   )rC   zerorR   s    r<   imagz
ivmpf.imagG   s    88==(r>   c                     | S rB   r_   rR   s    r<   	conjugatezivmpf.conjugateJ   s    r>   c                 Z    | j                   \  }}| j                  j                  ||f      S rB   rH   rC   make_mpfr\   s      r<   rL   zivmpf.aL   (    zz1xx  !Q((r>   c                 Z    | j                   \  }}| j                  j                  ||f      S rB   rg   r\   s      r<   rM   zivmpf.bQ   ri   r>   c                     | j                   }t        | j                  |j                        }|j	                  ||f      S rB   )rC   r   rH   r:   rh   rJ   rC   vs      r<   midz	ivmpf.midV   s2    hhDJJ)||QF##r>   c                     | j                   }t        | j                  |j                        }|j	                  ||f      S rB   )rC   r   rH   r:   rh   rl   s      r<   deltazivmpf.delta\   s2    hhdjj#((+||QqE""r>   c                 &    | j                   t        fS rB   )rH   mpi_zerorR   s    r<   _mpci_zivmpf._mpci_b   s    zz8##r>   c                      t        d      )Nz-no ordering relation is defined for intervals	TypeError)argss    r<   _comparezivmpf._comparef   s    GHHr>   c                     | j                   j                  |      }| j                  |j                  k  xr |j                  | j                  k  S rB   )rC   mpfrL   rM   )rJ   ts     r<   __contains__zivmpf.__contains__n   s6    HHLLO!##2ACC466M2r>   c                 V    t        | j                  | j                  j                        S rB   )r   rH   rC   r:   rR   s    r<   __str__zivmpf.__str__r   s    tzz488==11r>   c                 
   | j                   j                  rt        |       S | j                  \  }}t	        | j                   j
                        }t        j                  ||      }t        j                  ||      }d|d|dS )Nzmpi(, ))rC   prettystrrH   r
   r:   r   to_str)rJ   rL   rM   ns       r<   __repr__zivmpf.__repr__u   sa    88??t9zz1TXX]]#LLALLA !1%%r>   c                     t        |d      s	 | j                  j                  |      } || j                  |j                        S #  t        cY S xY w)NrH   )r5   rC   rD   NotImplementedrH   )sr{   cmpfuns      r<   rx   zivmpf._compare~   sG    q'"&EEMM!$ aggqww''&%%s   A Ac                 B    | j                  |t        j                        S rB   )rx   r   mpi_eqr   r{   s     r<   __eq__zivmpf.__eq__       QZZ5<<88r>   c                 B    | j                  |t        j                        S rB   )rx   r   mpi_ner   s     r<   __ne__zivmpf.__ne__   r   r>   c                 B    | j                  |t        j                        S rB   )rx   r   mpi_ltr   s     r<   __lt__zivmpf.__lt__   r   r>   c                 B    | j                  |t        j                        S rB   )rx   r   mpi_ler   s     r<   __le__zivmpf.__le__   r   r>   c                 B    | j                  |t        j                        S rB   )rx   r   mpi_gtr   s     r<   __gt__zivmpf.__gt__   r   r>   c                 B    | j                  |t        j                        S rB   )rx   r   mpi_ger   s     r<   __ge__zivmpf.__ge__   r   r>   c                     | j                   j                  t        | j                  | j                   j                              S rB   )rC   rh   r   rH   r:   rR   s    r<   __abs__zivmpf.__abs__   *    xx  TXX]]!CDDr>   c                     | j                   j                  t        | j                  | j                   j                              S rB   )rC   rh   r   rH   r:   rR   s    r<   __pos__zivmpf.__pos__   r   r>   c                     | j                   j                  t        | j                  | j                   j                              S rB   )rC   rh   r   rH   r:   rR   s    r<   __neg__zivmpf.__neg__   r   r>   Nc                 >    | j                   j                  | |||      S rB   rC   almosteqr   r{   rel_epsabs_epss       r<   aezivmpf.ae       uu~~aGW55r>   )r   NN)!__name__
__module____qualname____doc__rF   rN   rS   rV   rY   r]   propertyr`   rc   re   rL   rM   rn   rp   rs   rx   r   r   r   r|   r~   r   r   r   r   r   r   r   r   r_   r>   r<   r@   r@   &   s   ",02$  ( ($) ) ) ) $ $
 # #
 $ $I FFFF32&( 988888EEE6r>   r@   c                       e Zd ZddZd Zd Zd Zed        Zed        Z	ed        Z
ed        Zed	        Zed
        Zd Zd Zd ZddZd Zd Zd ZexZxZZd Zd Zd ZddZy)ivmpcc                     | j                   j                  |      }| j                   j                  |      }t        |       }|j                  |j                  f|_        |S rB   )rC   rD   newrH   rs   )rE   reimys       r<   rF   zivmpc.__new__   sH    WW__R WW__R H88RXX%r>   c                     | j                   \  \  }}\  }}||k(  r||k(  rt        ||f      S t        | j                         S rB   )rs   r0   r[   rJ   rL   rM   cds        r<   r]   zivmpc.__hash__   sB    A16a1fQF##$$r>   c                     | j                   j                  rt        |       S dt        | j                        dt        | j
                        dS )Nziv.mpc(r   r   )rC   r   r   reprr`   rc   r   s    r<   r   zivmpc.__repr__   s6    55<<q6M #'<aff>>r>   c                 `    dt        | j                        dt        | j                        dS )N( + *j))r   r`   rc   r   s    r<   r~   zivmpc.__str__   s     #AFFS[99r>   c                 f    | j                   \  \  }}\  }}| j                  j                  ||f      S rB   rs   rC   rh   r   s        r<   rL   zivmpc.a   0    A1xx  !Q((r>   c                 f    | j                   \  \  }}\  }}| j                  j                  ||f      S rB   r   r   s        r<   rM   zivmpc.b   r   r>   c                 f    | j                   \  \  }}\  }}| j                  j                  ||f      S rB   r   r   s        r<   r   zivmpc.c   r   r>   c                 f    | j                   \  \  }}\  }}| j                  j                  ||f      S rB   r   r   s        r<   r   zivmpc.d   r   r>   c                 R    | j                   j                  | j                  d         S Nr   rC   rh   rs   r   s    r<   r`   z
ivmpc.real       uu~~ahhqk**r>   c                 R    | j                   j                  | j                  d         S Nr   r   r   s    r<   rc   z
ivmpc.imag   r   r>   c                 l    | j                   \  }}| j                  j                  |t        |      f      S rB   )rs   rC   make_mpcr   )r   rL   rM   s      r<   re   zivmpc.conjugate   s*    xx1uu~~q'!*o..r>   c                 <   | j                   j                  |      }| j                  |j                  cxk  xr | j                  k  nc xs | j                  |j                  cxk  xr | j                  k  nc xs^ |j                  | j                  cxk  xr |j                  k  nc xs. |j                  | j                  cxk  xr |j                  k  nc }| j                  |j                  cxk  xr | j
                  k  nc xs | j                  |j
                  cxk  xr | j
                  k  nc xs^ |j                  | j                  cxk  xr |j
                  k  nc xs. |j                  | j
                  cxk  xr |j
                  k  nc }|xr |S rB   )rC   rD   rL   rM   r   r   )r   r{   real_overlapimag_overlaps       r<   overlapzivmpc.overlap   s   EEMM!qss)acc)oqssacc/@QSS/@oaccQSSFWTUTWTWFWo]^]`]`dedgdg]nklknkn]nqss)acc)oqssacc/@QSS/@oaccQSSFWTUTWTWFWo]^]`]`dedgdg]nklknkn]n,,r>   c                     | j                   j                  |      }|j                  | j                  v xr |j                  | j                  v S rB   )rC   rD   r`   rc   r   s     r<   r|   zivmpc.__contains__   s9    EEMM!vv4AFFaff$44r>   c                 B   t        || j                  j                        s	 | j                  j                  |      }t        |d      r|j                  t        f}nt        |d      r|j                  }|r| j                  k7  S | j                  k(  S #  t        cY S xY wNrH   rs   )	r6   rC   _typesrD   r   r5   rH   rr   rs   )r   r{   netvals       r<   rx   zivmpc._compare   s    !QUU\\*&EEMM!$ 1g77H$DQ!88D88t##xx4&%%s   B Bc                 $    | j                  |      S rB   rx   r   s     r<   r   zivmpc.__eq__   s    QZZ]*r>   c                 &    | j                  |d      S )NTr   r   s     r<   r   zivmpc.__ne__   s    QZZ400r>   c                     t        d      )Nz#complex intervals cannot be orderedru   r   s     r<   r   zivmpc.__lt__   s    I&KLLr>   c                     | j                   j                  t        | j                  | j                   j                              S rB   )rC   r   r%   rs   r:   r   s    r<   r   zivmpc.__neg__   '    155>>(188QUUZZ*HIIr>   c                     | j                   j                  t        | j                  | j                   j                              S rB   )rC   r   r$   rs   r:   r   s    r<   r   zivmpc.__pos__   r   r>   c                     | j                   j                  t        | j                  | j                   j                              S rB   )rC   rh   r+   rs   r:   r   s    r<   r   zivmpc.__abs__   r   r>   Nc                 >    | j                   j                  | |||      S rB   r   r   s       r<   r   zivmpc.ae   r   r>   )r   r   )Fr   )r   r   r   rF   r]   r   r~   r   rL   rM   r   r   r`   rc   re   r   r|   rx   r   r   r   r   r   r   r   r   r   r   r_   r>   r<   r   r      s    %?
: ) ) ) ) ) ) ) ) + + + +/-5  +0L%%F%VfIII6r>   r   c                 X     fd fdfd}fd}fd}fd}||||fS )Nc                 J    | j                   ||| j                              S rB   )r   r:   )rC   svalr   	f_complexs      r<   	g_complexz_binary_op.<locals>.g_complex   s    ||IdD#((;<<r>   c                     	 | j                   ||| j                              S # t        $ r |t        f}|t        f} | ||      cY S w xY wrB   )rh   r:   r.   rr   )rC   r   r   f_realr   s      r<   g_realz_binary_op.<locals>.g_real   sV    	.<<tT388 <== 	.(#D(#DS$--	.s   "& #AAc                 V   t        |t              rt        S | j                  }t        ||j                        s|j                  |      }t        |d      r || j                  |j                        S t        |d      r$ || j                  t        f|j                        S t        S r   )
r6   r1   r   rC   r   rD   r5   rH   rr   rs   r   r{   rC   r   r   s      r<   lop_realz_binary_op.<locals>.lop_real   s    a!.#8ee!SZZ(ckk!n!1gvc177AGG'D D1h	#7JAHH(U!Ur>   c                 *   | j                   }t        ||j                        s|j                  |      }t	        |d      r ||j
                  | j
                        S t	        |d      r$ ||j                  | j
                  t        f      S t        S r   )	rC   r6   r   rD   r5   rH   rs   rr   r   r   s      r<   rop_realz_binary_op.<locals>.rop_real  sq    ee!SZZ(ckk!n!1gvc177AGG'D D1h	#qxx!''8AT(U!Ur>   c                 2   t        |t              rt        S | j                  }t        || j                  j                        s	 | j                  j                  |      } || j                  |j                        S # t        t        f$ r	 t        cY S w xY wrB   )	r6   r1   r   rC   r   rD   rI   rv   rs   r   r{   rC   r   s      r<   lop_complexz_binary_op.<locals>.lop_complex  sy    a!.#8ee!QUU\\*&EEMM!$ ahh11 	* &%%&s   A> >BBc                     | j                   }t        || j                   j                        s| j                   j                  |      } ||j                  | j                        S rB   )rC   r6   r   rD   rs   r   s      r<   rop_complexz_binary_op.<locals>.rop_complex  sG    ee!QUU\\*a Aahh11r>   r_   )r   r   r   r   r   r   r   r   s   ``    @@r<   
_binary_opr      s2    =.22
 X{K77r>   c                   (    e Zd Zd Zd Z ee      Zy)ivmpf_constantc                 *    t        |       }||_        |S rB   )r   _f)rE   frJ   s      r<   rF   zivmpf_constant.__new__%  s    3xr>   c                     | j                   j                  d   }| j                  |t              }| j                  |t              }||fS r   )rC   _precr   r   r   )rJ   r:   rL   rM   s       r<   	_get_mpi_zivmpf_constant._get_mpi_)  s=    xx~~a GGD+&GGD-(!tr>   N)r   r   r   rF   r  r   rH   r_   r>   r<   r   r   $  s    
 YEr>   r   c                       e Zd Zd ZddZd ZddZed        Zd Z	d Z
 ed	 e	      Z ed
 e
      Zd Zd Zd Zd ZddZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZddZy)MPIntervalContextc                 T   t        dt        fi       | _        t        dt        fi       | _        | j                  | j                  f| _        t        dt        fi       | _        dg| _        | j                  d       | j                  t        | j                  gx| j                  _        x| j                  _        | j                  _        | x| j                  _        x| j                  _        | j                  _        d| _        t        j                  |        | j!                          y )Nr@   r   r   5   F)typer@   rz   r   mpcr   r   	_constantr   	_set_precr   _ctxdatarC   r   r2   __init___init_builtinsrC   s    r<   r  zMPIntervalContext.__init__2  s    w"-w"-ggsww'
-/@"ED	bHKQTVYV_V_G```!1CGG4D8;;;CGGK#''+
$$S)r>   Nc                 N    || j                  |      S | j                  ||f      S rB   )rz   )rC   rL   rM   s      r<   _mpizMPIntervalContext._mpi?  s'    9771:ww!u~r>   c                    | j                  d      | _        | j                  d      | _        | j                  d      | _        | j                   | _        | j                  d      | _        | j                  dd      | _        | j                  t        j                  t        j                        | _        | j                  t        j                        | _        | j                  t        j                  t        j                         | _        | j                  t        j$                  t        j&                        | _        | j                  t        j*                  t        j,                        | _        | j                  t        j0                        | _        | j                  t        j4                  t        j6                        | _        | j                  t        j:                  t        j<                        | _        | j                  t        j@                  t        jB                        | _"        | j                  t        jF                  t        jH                        | _%        | jJ                  | _&        | jO                  d       | _(        | jO                  t        jR                        | _*        | jO                  t        jV                        | _,        | jO                  t        jZ                        | _.        | jO                  t        j^                        | _0        | jO                  t        jb                        | _2        | jO                  t        jf                        | _4        | jO                  t        jj                        | _6        | jO                  t        jn                        | _8        | jO                  t        jr                        | _:        | jO                  t        jv                        | _<        y )Nr   r   infnanc                     dt         d| z
  dfS Nr   r   )r   )r:   rnds     r<   <lambda>z2MPIntervalContext._init_builtins.<locals>.<lambda>W  s    1gqvq2I r>   )=rz   onerb   r  ninfr  r  j_wrap_mpi_functionr   mpi_expr,   expmpi_sqrtsqrtmpi_logr-   lnmpi_cosmpci_coscosmpi_sinmpci_sinsinmpi_tantan	mpi_gamma
mpci_gammagammampi_loggammampci_loggammaloggamma
mpi_rgammampci_rgammargammampi_factorialmpci_factorial	factorialfacr  epsmpf_pipimpf_eempf_ln2ln2mpf_ln10ln10mpf_phiphi	mpf_eulereulermpf_catalancatalanmpf_glaisherglaishermpf_khinchinkhinchinmpf_twinprime	twinprimer  s    r<   r  z MPIntervalContext._init_builtinsD  sb   ''!*771:''%.GG8''%.!((G))%..9''u~~F((G((G((7**5??E<L<LM	--e.@.@%BUBUV++E,<,<e>O>OP
..u/B/BEDXDXY---- IJu||,ekk*--.==0--.MM%//2	mmE$5$56}}U%7%78}}U%7%78e&9&9:r>   c                       fd}|S )Nc                 L   |r |j                  dj                  d         }nj                  d   }j                  |       } t        | d      r"j	                   | j
                  |            S t        | d      r"j                   | j                  |            S t        )Nr:   r   rH   rs   )	getr   rD   r5   rh   rH   r   rs   rI   )r9   kwargsr:   rC   r   r   s      r<   gz/MPIntervalContext._wrap_mpi_function.<locals>.gd  s    zz&#))A,7yy|AAq'"||F177D$9::q(#||Iahh$=>>r>   r_   )rC   r   r   rO  s   ``` r<   r  z$MPIntervalContext._wrap_mpi_functionc  s    
	 r>   c                 4    |rfd}n}t        | ||       y )Nc                     | j                   }|D cg c]
  } ||       }}| j                  }	 | xj                  dz  c_         | g|i |}|| _        |S c c}w # || _        w xY w)N
   )rD   r:   )rC   rw   rN  rD   rL   r:   retvalr   s          r<   	f_wrappedz2MPIntervalContext._wrap_specfun.<locals>.f_wrappedt  sp    ++,01q
11xx$HHNHs4T4V4F#CHw 2  $CHs   A!A   	A))setattr)rE   namer   wraprT  s     `  r<   _wrap_specfunzMPIntervalContext._wrap_specfunq  s    	 IT9%r>   c                 h    t        dt        |            | j                  d<   t        |      | _        y )Nr   r   )maxrP   r   r   _dpsrC   r   s     r<   r	  zMPIntervalContext._set_prec  s$    1c!f~		!q>r>   c                 h    t        |      | j                  d<   t        dt        |            | _        y r  )r	   r   rZ  rP   r[  r\  s     r<   _set_dpszMPIntervalContext._set_dps  s$    "1~		!q#a&>r>   c                      | j                   d   S r   )r   r  s    r<   r  zMPIntervalContext.<lambda>  s    		! r>   c                     | j                   S rB   )r[  r  s    r<   r  zMPIntervalContext.<lambda>  s
    sxx r>   c                 >    t        | j                        }||_        |S rB   )r   rz   rH   rC   rm   rL   s      r<   rh   zMPIntervalContext.make_mpf  s    Lr>   c                 >    t        | j                        }||_        |S rB   )r   r  rs   rb  s      r<   r   zMPIntervalContext.make_mpc  s    Lr>   c                     |\  }}t        j                  ||| j                  t              }t        j                  ||| j                  t              }| j                  ||f      S rB   )r   r   r:   r   r   rh   )rC   pqpqrL   rM   s         r<   _mpqzMPIntervalContext._mpq  sR    11chh<1chh>||QF##r>   c                    t        || j                  | j                  f      r|S t        || j                        r|S t        |t              st        |d      rH| j                  |j                        }| j                  |j                        }| j                  ||      S t        |t              r't        || j                        }| j                  |      S t        |d      r|j                  \  }}nt	 |\  }}t        |d      r|j                  d   }nt!        || j                  t"              }t        |d      r|j                  d   }nt!        || j                  t$              }|t&        k(  s	|t&        k(  rt(        }t*        }t-        ||      sJ d       | j                  ||f      S # t        t        f$ r |x}}Y w xY w)N_mpc_rH   r   r   z"endpoints must be properly ordered)r6   rz   r  r  rX   r5   rD   r`   rc   r   r#   r:   rh   rH   rv   rI   r=   r   r   r   r   r   r   )rC   r9   r   r   rm   rL   rM   s          r<   rD   zMPIntervalContext.convert  sx   a#''377+,Ha'2Ia!WQ%8QVV$BQVV$B772b>!a$Q)A<<?"1g77DAq1 q'"GGAJ CHHk:q'"GGAJ CHHm<9T	AAa|AAA|||QF## z* 	As   6F- -GGc                 :   | j                  |      }t        |d      r!t        j                  |j                  |fi |S t        |d      rQt        j                  |j
                  d   |fi |}t        j                  |j
                  d   |fi |}d|d|dS y )NrH   rs   r   r   r   r   r   )rD   r5   r   
mpi_to_strrH   rs   )rC   r9   r   rN  r   r   s         r<   nstrzMPIntervalContext.nstr  s    KKN1g##AGGQ9&991h!!!((1+q;F;B!!!((1+q;F;B$&++  r>   c                    | j                  |      }t        || j                        rAt        | j	                  |j
                        | j	                  |j                              dz   S t        j                  |j                        \  }}|\  }}}}|r||z   S |t        k(  r| j                  S |t        k(  r| j                  S | j                  S r   )rD   r6   r  rZ  magr`   rc   r   r   rH   r   r  r   r  r  rC   r9   rL   rM   signmanr  bcs           r<   ro  zMPIntervalContext.mag  s    KKNa!swwqvv81<<}}QWW%1c3r6M:88O977Nwwr>   c                      y)NFr_   rC   r9   s     r<   isnanzMPIntervalContext.isnan  s    r>   c                      || j                   k(  S rB   )r  ru  s     r<   isinfzMPIntervalContext.isinf  s    CGG|r>   c                 |    | j                  |      }|j                  \  }}||k(  r|\  }}}}|r|dk\  S |t        k(  S y r   )rD   rH   r   rp  s           r<   isintzMPIntervalContext.isint  sJ    KKNww16!"D#sBax:r>   c                     | j                  |      j                  \  }}t        j                  ||      }t        j                  ||      }| j	                  ||f      S rB   )rD   rH   r   	mpf_shiftrh   )rC   r9   r   rL   rM   s        r<   ldexpzMPIntervalContext.ldexp  sL    {{1~##1OOAq!OOAq!||QqE""r>   c                 J    t        | j                  |            j                  S rB   )absrD   rL   ru  s     r<   absminzMPIntervalContext.absmin      3;;q>"$$$r>   c                 J    t        | j                  |            j                  S rB   )r  rD   rM   ru  s     r<   absmaxzMPIntervalContext.absmax  r  r>   c                     | j                  |      j                  }| j                  |      j                  }| j                  t        j                  ||| j
                              S rB   )rD   rH   rh   r   	mpi_atan2r:   )rC   r   r9   s      r<   atan2zMPIntervalContext.atan2  sH    KKN  KKN  ||EOOAa9::r>   c                 H   t        |t        j                        r|dfS t        |t              r*|\  }}| j	                  |      | j	                  |      z  dfS | j                  |      }t        || j                        r|dfS t        || j                        r|dfS t        )NZRC)r6   r   r   tuplerz   rD   r  rI   )rC   r9   rf  rg  s       r<   _convert_paramz MPIntervalContext._convert_param  s    a)c6MaDAqGGAJ+S11KKNa!c6Ma!c6Mr>   c                 R    t        || j                        xs t        |t              S rB   )r6   rz   r   rC   zs     r<   _is_real_typezMPIntervalContext._is_real_type  s    !SWW%AAy)AAr>   c                 .    t        || j                        S rB   )r6   r  r  s     r<   _is_complex_typez"MPIntervalContext._is_complex_type  s    !SWW%%r>   c                    t        |      }t        |      }t        |||z         }	| j                  x}
}d}	 |D ]  }|||   |z   z  } |	D ]  }|||   |z   z  } |dz  }||z  }||z  }|
|z  }
|dk(  r|
S ||kD  r| j                  Qr  )listranger  NoConvergence)rC   rf  rg  typescoeffsr  maxtermsrN  numdenr   r{   kis                 r<   hypsumzMPIntervalContext.hypsum	  s    fAhAaclA,!q	!,!,,!q	!,!,FAAFAAFAAFAAv 8|''' r>   rB   )   )ip  )r   r   r   r  r  r  r  classmethodrX  r	  r^  r   r:   dpsrh   r   rh  rD   rm  ro  rv  rx  rz  r}  r  r  r  r  r  r  r  r_   r>   r<   r  r  0  s    
;> & & "" ,i8D
'
2C

$$B,#%%;
B&(r>   r  )Ooperator r   libmp.backendr   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/   r0   matrices.matricesr1   rr   ctx_baser2   objectrF   r   r=   r@   r   r   __add____radd____sub____rsub____mul____rmul____div____rdiv____pow____rpow____truediv____rtruediv__r   r  numbersComplexregisterRealImportErrorr_   r>   r<   <module>r     s     %            '5> )nno6F o6b[6F [6z%8N @J'S[?\ <u~u}en?I'S[?\ <u~u}en?I'S[?\ <u~u}en?I'S[?\ <u~u}en?I'S[?\ <u~u}enMM 5#5MM 5#5
 U 
 i(+ i(d	OOU#LL%  		s   *:G% %G-,G-