ó
<Zc           @   s‘  d  Z  d d l Z d d l m Z m Z m Z m Z 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/ m0 Z0 m1 Z1 m2 Z2 m3 Z3 m4 Z4 m5 Z5 m6 Z6 m7 Z7 m8 Z8 m9 Z9 d d l: m; Z; m< Z< m= Z= m> Z> m? Z? m@ Z@ mA ZA mB ZB mC ZC mD ZD mE ZE mF ZF mG ZG mH ZH mI ZI mJ ZJ mK ZK mL ZL mM ZM mN ZN mO ZO mP ZP mQ ZQ mR ZR e  e f ZS e e f ZT e! e f ZU e" e f ZV e# e$ f ZW e# e$ e% f ZX d „  ZY d „  ZZ d	 „  Z[ e\ e d
 „ Z] d „  Z^ e d „ Z_ d „  Z` e d „ Za e d „ Zb d e d „ Zc d e d „ Zd e d „ Ze ef e d „ Zg d „  Zh e d „ Zi e d „ Zj e d „ Zk e d „ Zl e d „ Zm e d „ Zn e d „ Zo e d „ Zp e d „ Zq e d „ Zr e d  „ Zs e d! „ Zt e d" „ Zu e d# „ Zv e d$ „ Zw d% „  Zx e d& „ Zy e d' „ Zz e d( „ Z{ e d) „ Z| d* „  Z} e d+ „ Z~ e d, „ Z e d- „ Z€ e d. „ Z e d/ „ Z‚ e d0 „ Zƒ e d1 „ Z„ e d2 „ Z… e d3 „ Z† e d4 „ Z‡ e d5 „ Zˆ e d6 „ Z‰ e d7 „ ZŠ e d8 „ Z‹ e d9 „ ZŒ e d: ƒ Z e d; ƒ ZŽ d< „  Z e d= „ Z e d> „ Z‘ e d? „ Z’ e d@ „ Z“ e dA „ Z” e dB „ Z• dC dD „ Z– dC dE „ Z— dC dF „ Z˜ dC dG „ Z™ e dH k ry+ d d lš j› jœ j Zž ež j€ Z€ ež j| Z| Wn eŸ e  f k
 r‰dI GHn Xn  d S(J   s-   
Low-level functions for complex arithmetic.
iÿÿÿÿNi   (   t   MPZt   MPZ_ZEROt   MPZ_ONEt   MPZ_TWOt   BACKEND(1   t   round_floort   round_ceilingt
   round_downt   round_upt   round_nearestt
   round_fastt   bitcountt   bctablet	   normalizet
   normalize1t   reciprocal_rndt   rshiftt   lshiftt   giant_stepst   negative_rndt   to_strt   to_fixedt   from_man_expt
   from_floatt   to_floatt   from_intt   to_intt   fzerot   fonet   ftwot   fhalft   finft   fninft   fnant   fnonet   mpf_abst   mpf_post   mpf_negt   mpf_addt   mpf_subt   mpf_mult   mpf_divt   mpf_mul_intt	   mpf_shiftt   mpf_sqrtt	   mpf_hypott   mpf_rdiv_intt	   mpf_floort   mpf_ceilt   mpf_nintt   mpf_fract   mpf_signt   mpf_hasht   ComplexResult(   t   mpf_pit   mpf_expt   mpf_logt   mpf_cos_sint   mpf_cosh_sinht   mpf_tant   mpf_pow_intt   mpf_log_hypott   mpf_cos_sin_pit   mpf_phit   mpf_cost   mpf_sint
   mpf_cos_pit
   mpf_sin_pit   mpf_atant	   mpf_atan2t   mpf_cosht   mpf_sinht   mpf_tanht   mpf_asint   mpf_acost	   mpf_acosht   mpf_nthroott   mpf_fibonaccic         C   s0   |  \ } } | t  k r t S| t  k r, t St S(   s2   Check if either real or imaginary part is infinite(   t   _infst   Truet   False(   t   zt   ret   im(    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt
   mpc_is_inf)   s      c         C   s0   |  \ } } | t  k r t S| t  k r, t St S(   s9   Check if either real or imaginary part is infinite or nan(   t	   _infs_nanRO   RP   (   RQ   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_is_infnan0   s      c         K   sg   |  \ } } t  | | ƒ } | d rG | d t  t | ƒ | |  d S| d t  | | |  d Sd  S(   Ni    s    - t   js    + (   R   R%   (   RQ   t   dpst   kwargsRR   RS   t   rs(    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt
   mpc_to_str7   s
    
"c         C   s1   |  \ } } t  t | | | ƒ t | | | ƒ ƒ S(   N(   t   complexR   (   RQ   t   strictt   rndRR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_to_complex?   s    c         C   s’   t  j d k rY |  \ } } t | ƒ t  j j t | ƒ } | d t  j j } t | ƒ Sy t t |  d t	 ƒƒ SWn t
 k
 r t |  ƒ SXd  S(   Ns   3.2i   R]   (   t   syst   versionR4   t	   hash_infot   imagt   widtht   intt   hashR_   RO   t   OverflowError(   RQ   RR   RS   t   h(    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_hashC   s     
c         C   s"   |  \ } } | t  | | | ƒ f S(   N(   R%   (   RQ   t   precR^   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_conjugateP   s    c         C   s
   |  t  k S(   N(   t   mpc_zero(   RQ   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_is_nonzeroT   s    c         C   s@   |  \ } } | \ } } t  | | | | ƒ t  | | | | ƒ f S(   N(   R&   (   RQ   t   wRj   R^   t   at   bt   ct   d(    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_addW   s    c         C   s%   |  \ } } t  | | | | ƒ | f S(   N(   R&   (   RQ   t   xRj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_add_mpf\   s    i    c         C   s@   |  \ } } | \ } } t  | | | | ƒ t  | | | | ƒ f S(   N(   R'   (   RQ   Rn   Rj   R^   Ro   Rp   Rq   Rr   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_sub`   s    c         C   s%   |  \ } } t  | | | | ƒ | f S(   N(   R'   (   RQ   t   pRj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_sub_mpfe   s    c         C   s.   |  \ } } t  | | | ƒ t  | | | ƒ f S(   N(   R$   (   RQ   Rj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_posi   s    c         C   s.   |  \ } } t  | | | ƒ t  | | | ƒ f S(   N(   R%   (   RQ   Rj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_negm   s    c         C   s(   |  \ } } t  | | ƒ t  | | ƒ f S(   N(   R+   (   RQ   t   nRo   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt	   mpc_shiftq   s    c         C   s   |  \ } } t  | | | | ƒ S(   sE   Absolute value of a complex number, |a+bi|.
    Returns an mpf value.(   R-   (   RQ   Rj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_absu   s    c         C   s   |  \ } } t  | | | | ƒ S(   s3   Argument of a complex number. Returns an mpf value.(   RE   (   RQ   Rj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_arg{   s    c         C   s.   |  \ } } t  | | | ƒ t  | | | ƒ f S(   N(   R/   (   RQ   Rj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt	   mpc_floor€   s    c         C   s.   |  \ } } t  | | | ƒ t  | | | ƒ f S(   N(   R0   (   RQ   Rj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_ceil„   s    c         C   s.   |  \ } } t  | | | ƒ t  | | | ƒ f S(   N(   R1   (   RQ   Rj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_nintˆ   s    c         C   s.   |  \ } } t  | | | ƒ t  | | | ƒ f S(   N(   R2   (   RQ   Rj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_fracŒ   s    c         C   sˆ   |  \ } } | \ } } t  | | ƒ } t  | | ƒ }	 t  | | ƒ }
 t  | | ƒ } t | |	 | | ƒ } t |
 | | | ƒ } | | f S(   sÎ   
    Complex multiplication.

    Returns the real and imaginary part of (a+bi)*(c+di), rounded to
    the specified precision. The rounding mode applies to the real and
    imaginary parts separately.
    (   R(   R'   R&   (   RQ   Rn   Rj   R^   Ro   Rp   Rq   Rr   Rw   t   qt   rt   sRR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_mul‘   s    c   
      C   sm   |  \ } } t  | | ƒ } t  | | ƒ } t  | | | | ƒ } t | | | | ƒ } t | d ƒ }	 | |	 f S(   Ni   (   R(   R'   R+   (
   RQ   Rj   R^   Ro   Rp   Rw   Rƒ   R„   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt
   mpc_square£   s    c         C   s@   |  \ } } t  | | | | ƒ } t  | | | | ƒ } | | f S(   N(   R(   (   RQ   Rw   Rj   R^   Ro   Rp   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_mul_mpf­   s    c         C   sF   |  \ } } t  t | | | | ƒ ƒ } t | | | | ƒ } | | f S(   sB   
    Multiply the mpc value z by I*x where x is an mpf value.
    (   R%   R(   (   RQ   Rt   Rj   R^   Ro   Rp   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_mul_imag_mpf³   s    c         C   s@   |  \ } } t  | | | | ƒ } t  | | | | ƒ } | | f S(   N(   R*   (   RQ   R{   Rj   R^   Ro   Rp   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_mul_int¼   s    c         C   s¶   |  \ } } | \ } } | d } t  t | | ƒ t | | ƒ | ƒ }	 t  t | | ƒ t | | ƒ | ƒ }
 t t | | ƒ t | | ƒ | ƒ } t |
 |	 | | ƒ t | |	 | | ƒ f S(   Ni
   (   R&   R(   R'   R)   (   RQ   Rn   Rj   R^   Ro   Rp   Rq   Rr   t   wpt   magt   tt   u(    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_divÂ   s    
$$$c         C   s@   |  \ } } t  | | | | ƒ } t  | | | | ƒ } | | f S(   s   Calculate z/p where p is real(   R)   (   RQ   Rw   Rj   R^   Ro   Rp   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_div_mpfÍ   s    c         C   sn   |  \ } } t  t | | ƒ t | | ƒ | d ƒ } t | | | | ƒ } t t | | | | ƒ ƒ } | | f S(   s   Calculate 1/z efficientlyi
   (   R&   R(   R)   R%   (   RQ   Rj   R^   Ro   Rp   t   mRR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_reciprocalÔ   s
    (c   	      C   s€   | \ } } t  t | | ƒ t | | ƒ | d ƒ } t t | |  ƒ | | | ƒ } t t t | |  ƒ ƒ | | | ƒ } | | f S(   s)   Calculate p/z where p is real efficientlyi
   (   R&   R(   R)   R%   (	   Rw   RQ   Rj   R^   Ro   Rp   R‘   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_mpf_divÜ   s
    ($c         C   sŠ   d } d } xq | r | d @rQ | |  | | | |  | | } } | d 8} n  |  |  | | d |  | }  } | d } q W| | f S(   sg   Complex integer power: computes (a+b*I)**n exactly for
    nonnegative n (a and b must be Python ints).i   i    i   (    (   Ro   Rp   R{   t   wret   wim(    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   complex_int_powä   s    	
%!c         C   sT   | d t  k r' t |  | d | | ƒ St t t |  | d ƒ | | d ƒ | | ƒ S(   Ni   i    i
   (   R   t   mpc_pow_mpft   mpc_expR†   t   mpc_log(   RQ   Rn   Rj   R^   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_powñ   s    c   	      C   s¤   | \ } } } } | d k r= t  |  d | | | >| | ƒ S| d k rw t |  | d ƒ } t  | d | | | | ƒ St t t |  | d ƒ | | d ƒ | | ƒ S(   Ni    iÿÿÿÿi
   (   t   mpc_pow_intt   mpc_sqrtR˜   Rˆ   R™   (	   RQ   Rw   Rj   R^   t   psignt   pmant   pexpt   pbct   sqrtz(    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyR—   ö   s    c         C   sŽ  |  \ } } | t  k r1 t | | | | ƒ t  f S| t  k rÃ t | | | | ƒ } | d ;} | d k rr | t  f S| d k rˆ t  | f S| d k r¤ t | ƒ t  f S| d k rÃ t  t | ƒ f Sn  | d k rÓ t S| d k rï t |  | | ƒ S| d k rt |  | | ƒ S| d k r't |  | | ƒ S| d k  rTt t |  | | d ƒ | | ƒ S| \ } } }	 }
 | \ } } } } | rˆ| } n  | r˜| } n  |	 | } t | ƒ } | | t	 |
 | ƒ } | d k  ra| d k rð| | K} | }	 n | | K} |	 } t
 | | | ƒ \ } } t | t | |	 ƒ | | ƒ } t | t | | ƒ | | ƒ } | | f St t t |  | d ƒ | | d ƒ | | ƒ S(	   Ni   i    i   i   i   iÿÿÿÿi'  i
   (   R   R<   R%   t   mpc_oneRy   R‡   R’   R›   t   abst   maxR–   R   Re   R˜   RŠ   R™   (   RQ   R{   Rj   R^   Ro   Rp   t   vt   asignt   amant   aexpt   abct   bsignt   bmant   bexpt   bbct   det   abs_det
   exact_sizeRR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyR›   ÿ   sX    


     ! 
 


	
c         C   s©  |  \ } } | t  k ry | t  k r. | | f S| d rZ t t | ƒ | | ƒ } t  | f St | | | ƒ } | t  f Sn  | d } | d st t | | f | ƒ | | ƒ } t | d ƒ }	 t |	 | | ƒ } t | d ƒ }
 t |
 | ƒ } t | | | | ƒ } nš t t | | f | ƒ | | ƒ } t | d ƒ }	 t |	 | | ƒ } t | d ƒ }
 t |
 | ƒ } t | | | | ƒ } | d rŸt | ƒ } t | ƒ } n  | | f S(   s¥   Complex square root (principal branch).

    We have sqrt(a+bi) = sqrt((r+a)/2) + b/sqrt(2*(r+a))*i where
    r = abs(a+bi), when a+bi is not a negative real number.i    i   iÿÿÿÿi   (   R   R,   R%   R&   R}   R+   R)   R'   (   RQ   Rj   R^   Ro   Rp   RS   RR   R‹   R   RŽ   R¥   Rn   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyRœ   '  s6    




!!
c         C   s…  d } t  t |  | | | ƒ ƒ } t  t | | | | ƒ ƒ } yP | d | d | } | j } | j }	 t t  | ƒ ƒ } t t  |	 ƒ ƒ }	 Wn‰ t k
 rt | | ƒ } t | | ƒ } t | ƒ }
 t d |
 | ƒ } t | | f | t	 f | ƒ \ } }	 t
 | ƒ } t
 |	 ƒ }	 n Xd } | } | } xJt | | | ƒ D]5} t | |	 | d ƒ \ } } t | | d | | | ƒ } t | | d | | | ƒ } | | | | | | ?} t |  | | ƒ } t | | | ƒ } | | | | | ?} | | | | | ?} | | >| } | | >| } | | d t | | | ƒ | } | | d t |	 | | ƒ | }	 | } qBW| |	 f S(   Ni2   y              ð?g      ð?i   i
   (   Re   R   t   realRc   R    Rg   R   R.   Rš   R   R   R   R–   R   (   Ro   Rp   R{   Rj   t   startt   a1t   b1R„   RR   RS   t   fnt   ntht   extrat   prevpt   extra1Rw   t   re2t   im2t   r4t   apt   bpt   rect   imct   rebt   imb(    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_nthroot_fixedK  sF    		$##
c         C   s  |  \ } } | d d k rG | t  k rG t | | | | ƒ } | t  f S| d k  rá | d k rc t S| d k r… t | | f | | ƒ S| d k rª t t | | f | | ƒ St | | f | | d t | ƒ } t t | | | ƒ S| d k rêt d | d ƒ } | \ }	 }
 } } | \ } } } } t | | f | ƒ } | d	 | d d
 k rê| d	 | d | k  rêt	 | | ƒ } t	 | | ƒ } t
 | | | | ƒ \ } } d } t | | | | | ƒ } t | | | | | ƒ } | | f Sn  t | ƒ } | d d } t d | | ƒ } t | | f | t  f | | ƒ \ } } t | d | d | d | d | | ƒ } t | d | d | d | d | | ƒ } | | f S(   su   
    Complex n-th root.

    Use Newton method as in the real case when it is faster,
    otherwise use z**(1/n)
    i    i   i   iÿÿÿÿi   i   g333333ó?i
   iþÿÿÿiöÿÿÿi   (   R   RL   R¢   Ry   R   t   mpc_nthrootR   Re   R}   R   RÃ   R   R   R.   Rš   R   (   RQ   R{   Rj   R^   Ro   Rp   RR   t   inverset   prec2R¦   R§   R¨   R©   Rª   R«   R¬   R­   t   pft   aft   bfRS   R·   Rµ   R¶   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyRÄ   r  sB    
$0'++c         C   s   t  |  d | | ƒ S(   s   
    Complex cubic root.
    i   (   RÄ   (   RQ   Rj   R^   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_cbrt›  s    c   
      C   s°   |  \ } } | t  k r( t | | | ƒ S| t  k rJ t | | | ƒ t  f St | | d | ƒ } t | | d | ƒ \ } } t | | | | ƒ } t | | | | ƒ }	 | |	 f S(   sv  
    Complex exponential function.

    We use the direct formula exp(a+bi) = exp(a) * (cos(b) + sin(b)*i)
    for the computation. This formula is very nice because it is
    pefectly stable; since we just do real multiplications, the only
    numerical errors that can creep in are single-ulp rounding errors.

    The formula is efficient since mpmath's real exp is quite fast and
    since we can compute cos and sin simultaneously.

    It is no problem if a and b are large; if the implementations of
    exp/cos/sin are accurate and efficient for all real numbers, then
    so is this function for all complex numbers.
    i   (   R   R9   R7   R(   (
   RQ   Rj   R^   Ro   Rp   RŒ   Rq   R…   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyR˜   ¡  s    c         C   s9   t  |  d |  d | | ƒ } t |  | | ƒ } | | f S(   Ni    i   (   R=   R~   (   RQ   Rj   R^   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyR™   ¼  s    c         C   s¾   |  \ } } | t  k r. t | | | ƒ t  f S| t  k rP t | | | ƒ t  f S| d } t | | ƒ \ } } t | | ƒ \ } }	 t | | | | ƒ }
 t | |	 | | ƒ } |
 t | ƒ f S(   sS  Complex cosine. The formula used is cos(a+bi) = cos(a)*cosh(b) -
    sin(a)*sinh(b)*i.

    The same comments apply as for the complex exp: only real
    multiplications are pewrormed, so no cancellation errors are
    possible. The formula is also efficient since we can compute both
    pairs (cos, sin) and (cosh, sinh) in single stwps.i   (   R   R@   RF   R9   R:   R(   R%   (   RQ   Rj   R^   Ro   Rp   R‹   Rq   R…   t   cht   shRR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_cosÁ  s    
c         C   s¸   |  \ } } | t  k r. t | | | ƒ t  f S| t  k rP t  t | | | ƒ f S| d } t | | ƒ \ } } t | | ƒ \ } }	 t | | | | ƒ }
 t | |	 | | ƒ } |
 | f S(   sƒ   Complex sine. We have sin(a+bi) = sin(a)*cosh(b) +
    cos(a)*sinh(b)*i. See the docstring for mpc_cos for additional
    comments.i   (   R   RA   RG   R9   R:   R(   (   RQ   Rj   R^   Ro   Rp   R‹   Rq   R…   RË   RÌ   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_sinÕ  s    
c         C   s  |  \ } } | \ } } } } | \ }	 }
 } } | t  k rR t | | | ƒ t  f S| t  k rt t  t | | | ƒ f S| d } t | d ƒ } t | d ƒ } t | | ƒ \ } } t | | ƒ \ } } t | | | ƒ } t | | | | ƒ } t | | | | ƒ } | | f S(   sc   Complex tangent. Computed as tan(a+bi) = sin(2a)/M + sinh(2b)/M*i
    where M = cos(2a) + cosh(2b).i   i   (   R   R;   RH   R+   R9   R:   R&   R)   (   RQ   Rj   R^   Ro   Rp   R¦   R§   R¨   R©   Rª   R«   R¬   R­   R‹   Rq   R…   RË   RÌ   RŒ   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_tanå  s       
c         C   sÞ   |  \ } } | t  k r. t | | | ƒ t  f St | t | d ƒ | d ƒ } | t  k rp t | | | ƒ t  f S| d } t | | ƒ \ } } t | | ƒ \ } }	 t | | | | ƒ }
 t | |	 | | ƒ } |
 t | ƒ f S(   Ni   i   (   R   RB   R(   R6   RF   R>   R:   R%   (   RQ   Rj   R^   Ro   Rp   R‹   Rq   R…   RË   RÌ   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt
   mpc_cos_piø  s     
c         C   sØ   |  \ } } | t  k r. t | | | ƒ t  f St | t | d ƒ | d ƒ } | t  k rp t  t | | | ƒ f S| d } t | | ƒ \ } } t | | ƒ \ } }	 t | | | | ƒ }
 t | |	 | | ƒ } |
 | f S(   Ni   i   (   R   RC   R(   R6   RG   R>   R:   (   RQ   Rj   R^   Ro   Rp   R‹   Rq   R…   RË   RÌ   RR   RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt
   mpc_sin_pi  s     
c         C   s$  |  \ } } | t  k rF t | | | ƒ \ } } | t  f t  | f f S| t  k r€ t | | | ƒ \ } } | t  f | t  f f S| d }	 t | |	 ƒ \ } } t | |	 ƒ \ } } t | | | | ƒ }
 t | | | | ƒ } t | | | | ƒ } t | | | | ƒ } |
 t | ƒ f | | f f S(   Ni   (   R   R:   R9   R(   R%   (   RQ   Rj   R^   Ro   Rp   RË   RÌ   Rq   R…   R‹   t   cret   cimt   sret   sim(    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_cos_sin  s    
c         C   sD  |  \ } } | t  k rF t | | | ƒ \ } } | t  f | t  f f St | t | d ƒ | d ƒ } | t  k r  t | | | ƒ \ } } | t  f t  | f f S| d }	 t | |	 ƒ \ } } t | |	 ƒ \ } } t | | | | ƒ }
 t | | | | ƒ } t | | | | ƒ } t | | | | ƒ } |
 t | ƒ f | | f f S(   Ni   i   (   R   R>   R(   R6   R:   R%   (   RQ   Rj   R^   Ro   Rp   Rq   R…   RË   RÌ   R‹   RÒ   RÓ   RÔ   RÕ   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_cos_sin_pi%  s      
c         C   s(   |  \ } } t  | t | ƒ f | | ƒ S(   s:   Complex hyperbolic cosine. Computed as cosh(z) = cos(z*i).(   RÍ   R%   (   RQ   Rj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_cosh7  s    c         C   s4   |  \ } } t  | | f | | ƒ \ } } | | f S(   s;   Complex hyperbolic sine. Computed as sinh(z) = -i*sin(z*i).(   RÎ   (   RQ   Rj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_sinh<  s    c         C   s4   |  \ } } t  | | f | | ƒ \ } } | | f S(   s>   Complex hyperbolic tangent. Computed as tanh(z) = -i*tan(z*i).(   RÏ   (   RQ   Rj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_tanhB  s    c         C   sÜ   |  \ } } | d } t  t | | ƒ t | ƒ f } t t | | ƒ | f } t | | ƒ } t | | ƒ }	 t | |	 | | ƒ \ } } t t | d ƒ ƒ t | d ƒ f }
 |
 d t k rØ t |  ƒ rØ |
 d t	 f }
 n  |
 S(   Ni   iÿÿÿÿi   i    (
   R&   R   R%   R'   R™   Rv   R+   R!   RT   R   (   RQ   Rj   R^   Ro   Rp   R‹   Rt   t   yt   l1t   l2R¥   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_atanI  s    
$gû:pÎˆä?g      ø?c         C   sù  |  \ } } | d } | t  k r;t t t | ƒ | ƒ } | d s | d k rf t | | | ƒ t  f St | | | ƒ t  f Sq;| d rè t | | ƒ } t t | ƒ | | ƒ }	 | d k rÌ | t |	 ƒ f St t	 | d ƒ ƒ |	 f Sq;t | | | ƒ }	 | d k rt  |	 f St | | ƒ } t	 | d ƒ t |	 ƒ f Sn  d }
 } | d rdt | ƒ } d }
 n  | d rƒt | ƒ } d } n  t t | | ƒ } t
 t | | ƒ } t | | | ƒ } t | | | ƒ } t	 t
 | | | ƒ d ƒ } t | | | ƒ } t | | | ƒ } t t | | ƒ d sP| d k r>t | | ƒ } qÔt | | ƒ } n„t
 | | | ƒ } | d st | t
 | | | ƒ | ƒ }	 t
 | | | ƒ } t	 t | t
 |	 | | ƒ | ƒ d ƒ } | d k röt t t | | ƒ | | ƒ | ƒ } qÔt t | t | | ƒ | ƒ | ƒ } n· t | t
 | | | ƒ | ƒ }	 t | t | | | ƒ | ƒ } t	 t
 |	 | | ƒ d ƒ } t | t | | ƒ | ƒ } | d k r¹t t | | | ƒ | ƒ } n t t | | | ƒ | ƒ } t t | | ƒ d sØt | t
 | | | ƒ | ƒ } t | ƒ d rZt
 | | | ƒ } t | | | ƒ } t	 t
 | | | ƒ d ƒ } n- t | | | ƒ } t	 t
 | | | ƒ d ƒ } t | t
 | t | ƒ | ƒ } t t
 t t
 | t | | ƒ | ƒ | ƒ | ƒ } nB t t t | | | ƒ t | ƒ | ƒ } t t
 | | | ƒ | ƒ } |
 rV| d k rGt t | ƒ | | ƒ } qVt | ƒ } n  | rx| d k rxt | ƒ } n  | r™| d k r™t | ƒ } n  t | d | d | d | d | | ƒ } t | d | d | d | d | | ƒ } | | f S(   s&   complex acos for n = 0, asin for n = 1
    The algorithm is described in
    T.E. Hull, T.F. Fairgrieve and P.T.P. Tang
    'Implementing the Complex Arcsine and Arcosine Functions
    using Exception Handling',
    ACM Trans. on Math. Software Vol. 23 (1997), p299
    The complex acos and asin can be defined as
    acos(z) = acos(beta) - I*sign(a)* log(alpha + sqrt(alpha**2 -1))
    asin(z) = asin(beta) + I*sign(a)* log(alpha + sqrt(alpha**2 -1))
    where z = a + I*b
    alpha = (1/2)*(r + s); beta = (1/2)*(r - s) = a/alpha
    r = sqrt((a+1)**2 + y**2); s = sqrt((a-1)**2 + y**2)
    These expressions are rewritten in different ways in different
    regions, delimited by two crossovers alpha_crossover and beta_crossover,
    and by abs(a) <= 1, in order to improve the numerical accuracy.
    i
   i    iÿÿÿÿi   i   i   (   R   R'   R   R#   RJ   RI   R6   RK   R%   R+   R&   R-   R)   R(   t   beta_crossoverRD   R,   t   alpha_crossoverR8   R   (   RQ   Rj   R^   R{   Ro   Rp   R‹   t   amt   piRq   R¦   Rª   R½   R„   R…   t   alphat   betat   b2RR   t   AxRr   t   c1t   c2t   Am1RS   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt	   acos_asin_  s–    





	
	
'''3'++c         C   s   t  |  | | d ƒ S(   Ni    (   Rê   (   RQ   Rj   R^   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_acosç  s    c         C   s   t  |  | | d ƒ S(   Ni   (   Rê   (   RQ   Rj   R^   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_asinê  s    c         C   s@   |  \ } } t  | t | ƒ f | | ƒ \ } } t | ƒ | f S(   N(   Rì   R%   (   RQ   Rj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt	   mpc_asinhí  s    $c         C   sR   t  |  | | ƒ \ } } | d s. | t k r> t | ƒ | f S| t | ƒ f Sd  S(   Ni    (   Rë   R   R%   (   RQ   Rj   R^   Ro   Rp   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt	   mpc_acoshó  s    c         C   sš   | d } t  |  t | ƒ } t t |  | ƒ } t | | ƒ } t | | ƒ } t t | | | ƒ d ƒ } | d t k r– t |  ƒ r– t | d f } n  | S(   Ni   iÿÿÿÿi    i   (   Rs   R¢   Rv   R™   R|   R!   RT   R   (   RQ   Rj   R^   R‹   Ro   Rp   R¥   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt	   mpc_atanhü  s    
c         C   sú   |  \ } } | t  k r. t | | | ƒ t  f St t | d | d ƒ t | d | d ƒ ƒ } | | d } t | ƒ } t t | d ƒ t | ƒ } t | t  f |  | ƒ }	 t	 |  | ƒ }
 t
 |
 |	 | ƒ }
 t |	 |
 | ƒ }	 t |	 | | | ƒ }	 |	 S(   Ni   i   i   i   (   R   RM   R¤   R£   R?   R&   R+   R"   Rš   RÐ   R   Rv   R   (   RQ   Rj   R^   RR   RS   t   sizeR‹   Ro   Rp   RŽ   R¥   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_fibonacci
  s    3t   fc         C   s
   t  ‚ d  S(   N(   R5   (   Rt   Rj   R^   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpf_expj  s    c         C   s¶   |  \ } } | t  k r( t | | | ƒ S| t  k rP t t | ƒ | | ƒ t  f St t | ƒ | d ƒ } t | | d ƒ \ } } t | | | | ƒ } t | | | | ƒ } | | f S(   Ni
   (   R   R9   R7   R%   R(   (   RQ   Rj   R^   RR   RS   t   eyRq   R…   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   mpc_expj  s    c         C   s
   t  ‚ d  S(   N(   R5   (   Rt   Rj   R^   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt
   mpf_expjpi(  s    c         C   s  |  \ } } | t  k r( t | | | ƒ S| \ } } } } | d }	 | rd |	 t d | | ƒ 7}	 n  t t t |	 ƒ | |	 ƒ ƒ } | t  k r¤ t | | | ƒ t  f St | | d ƒ }
 t | | d ƒ \ } } t |
 | | | ƒ } t |
 | | | ƒ } | | f S(   Ni
   i    (   R   R>   R¤   R%   R(   R6   R7   (   RQ   Rj   R^   RR   RS   t   signt   mant   expt   bcR‹   Rô   Rq   R…   (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt
   mpc_expjpi+  s    
t   sages&   Warning: Sage imports in libmpc failed(¡   t   __doc__R`   t   backendR    R   R   R   R   t   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/   R0   R1   R2   R3   R4   R5   t	   libelefunR6   R7   R8   R9   R:   R;   R<   R=   R>   R?   R@   RA   RB   RC   RD   RE   RF   RG   RH   RI   RJ   RK   RL   RM   R¢   Rl   t   mpc_twot   mpc_halfRN   RU   RT   RV   R[   RP   R_   Ri   Rk   Rm   Rs   Ru   Rv   Rx   Ry   t   NoneRz   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ì   Rí   Rî   Rï   Rñ   Ró   Rõ   Rö   Rû   t   sage.libs.mpmath.ext_libmpt   libst   mpmatht	   ext_libmpt   _lbmpt   ImportErrort   AttributeError(    (    (    s2   lib/python2.7/site-packages/mpmath/libmp/libmpc.pyt   <module>   s¢   (ÿ 1š
						
			($	')	ˆ		