
<Zc        +   @   s  d  Z  d d l Z d d l Z d d l 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   Z d   Z y# e j d  d   Z d   Z Wn) e e f k
 r e j Z e j Z n Xe e j d    Z e e e j  Z e e e j  Z e e j e j  Z e e j e j  Z e e j e j  Z e e j e j  Z e e j e j  Z e e j e j  Z e e j  e j   Z  e e j! e j!  Z! e e j" e j"  Z" e e j# e j#  Z# e e j$ d    Z$ e e j% d    Z% e d   d    Z& e d   d    Z' d   Z( d   Z) d   Z* d   Z+ d    Z, e e* e,  Z- e e) e+  Z. d!   Z/ d"   Z0 d Z1 e1 Z2 e1 e1 Z3 d$ Z4 e1 d% d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 f Z5 e6 e5  d9 Z7 d: Z8 d Z9 dD   Z: dE   Z; e e: e;  Z< dF   Z= dG   Z> dH   Z? dI   Z@ dJ dK dL dM dN dO dJ dP dQ dR g
 ZA dS   ZB dT   ZC e eB eC  ZD dU dV dW dX dY dZ d[ d\ d] g	 d d d  ZE d% d^ d_ d` da db dc dd de df g
 d d d  ZF dg   ZG dh   ZH di   ZI dj   ZJ dk   ZK dl   ZL d d d d d d d d d d d d ddddddddd	d
ddddddddddddddddddddg* ZM d ZN eO d  ZP eO d  ZQ eO d  ZR d   ZS d d d d d d d d d d d d d d d d d d d d d d d d d d d g ZT d d d d d d d d d g	 d d d  ZU d% d d d d d d d d g	 d d d  ZV d d d d d d d d d d d g ZW d d d d d d d d d d d g ZX d   ZY d S(  s   
This module complements the math and cmath builtin modules by providing
fast machine precision versions of some additional functions (gamma, ...)
and wrapping math/cmath functions so that they can be called with either
real or complex arguments.
iNg-DT!	@giW
@g;f?gw@gw?g9B.?gUk@gox?g]O?gm<B{@g!;?gHP?c            s"      f d   }  j  | _  | S(   Nc            s   t  |   t k r  |   St  |   t k r8   |   Sy t |   }   |   SWn* t t f k
 r~ t |   }    |   SXd  S(   N(   t   typet   floatt   complext	   TypeErrort
   ValueError(   t   xt   kwargs(   t	   f_complext   f_real(    s+   lib/python2.7/site-packages/mpmath/math2.pyt   f   s    

(   t   __name__(   R   R   R	   (    (   R   R   s+   lib/python2.7/site-packages/mpmath/math2.pyt   _mathfun_real   s    c            s"      f d   }  j  | _  | S(   Nc            s[   t  |   t k r   |   Sy  t |    SWn$ t t f k
 rV   t |    SXd  S(   N(   R    R   R   R   R   (   R   R   (   R   R   (    s+   lib/python2.7/site-packages/mpmath/math2.pyR	   +   s    
(   R
   (   R   R   R	   (    (   R   R   s+   lib/python2.7/site-packages/mpmath/math2.pyt   _mathfun*   s    c            s"      f d   }  j  | _  | S(   Nc             sG   y  d   |  D   SWn( t  t f k
 rB   d   |  D   SXd  S(   Nc         s   s   |  ] } t  |  Vq d  S(   N(   R   (   t   .0R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pys	   <genexpr>8   s    c         s   s   |  ] } t  |  Vq d  S(   N(   R   (   R   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pys	   <genexpr>:   s    (   R   R   (   t   argsR   (   R   R   (    s+   lib/python2.7/site-packages/mpmath/math2.pyR	   6   s    (   R
   (   R   R   R	   (    (   R   R   s+   lib/python2.7/site-packages/mpmath/math2.pyt
   _mathfun_n5   s    g       c         C   s(   |  d k r t  d   n  t j |   S(   Ng        s   math domain error(   R   t   matht   log(   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   math_logB   s    c         C   s(   |  d k  r t  d   n  t j |   S(   Ng        s   math domain error(   R   R   t   sqrt(   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt	   math_sqrtF   s    c         C   s   t  |   | S(   N(   R   (   R   t   y(    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   <lambda>N   s    c         C   s%   t  t j |  j  t j |  j   S(   N(   R   R   t   floort   realt   imag(   t   z(    (    s+   lib/python2.7/site-packages/mpmath/math2.pyR   `   s    c         C   s%   t  t j |  j  t j |  j   S(   N(   R   R   t   ceilR   R   (   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyR   b   s    c         C   s   t  j |   t  j |   f S(   N(   R   t   cost   sin(   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyR   e   s    c         C   s   t  j |   t  j |   f S(   N(   t   cmathR   R   (   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyR   f   s    c         C   s   |  d d S(   Ng      ?i   (    (   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyR   h   s    c         C   s   |  d d S(   Ng      ?i   (    (   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyR   h   s    c         C   sE   d | } y t  |   | SWn" t t f k
 r@ t |   | SXd  S(   Ng      ?(   R   R   R   R   (   R   t   nt   r(    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   nthrootj   s
    
c         C   s   |  d k  r t  |   St |  d  \ } } | t 9} | d ;} | d k rZ t j |  S| d k rs t j |  S| d k r t j |  S| d k r t j |  Sd  S(   Ni    g      ?i   i   i   i   (   t   _sinpi_realt   divmodt   piR   R   R   (   R   R   R    (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyR"   q   s    

    c         C   s   |  d k  r |  }  n  t  |  d  \ } } | t 9} | d ;} | d k rX t j |  S| d k rr t j |  S| d k r t j |  S| d k r t j |  Sd  S(   Ni    g      ?i   i   i   i   (   R#   R$   R   R   R   (   R   R   R    (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   _cospi_real|   s    


    c         C   s   |  j  d k  r t |   St |  j  d  \ } } t t | |  j  }  | d ;} | d k rl t j |   S| d k r t j |   S| d k r t j |   S| d k r t j |   Sd  S(   Ni    g      ?i   i   i   i   (	   R   t   _sinpi_complexR#   R$   R   R   R   R   R   (   R   R   R    (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyR&      s    
    c         C   s   |  j  d k  r |  }  n  t |  j  d  \ } } t t | |  j  }  | d ;} | d k rj t j |   S| d k r t j |   S| d k r t j |   S| d k r t j |   Sd  S(   Ni    g      ?i   i   i   i   (   R   R#   R$   R   R   R   R   R   (   R   R   R    (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   _cospi_complex   s    

    c         C   se   y t  |   t |   SWnF t k
 r` t |   j d k rA d St |   j d k  rZ d S  n Xd  S(   Ni
   y              ?y              (   t   sinpit   cospit   OverflowErrorR   R   (   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   tanpi   s    c         C   se   y t  |   t |   SWnF t k
 r` t |   j d k rA d St |   j d k  rZ d S  n Xd  S(   Ni
   y              y              ?(   R)   R(   R*   R   R   (   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   cotpi   s    gu <7~g      <g      ?g       @g      @g      8@g      ^@g     @g     @g     @g     &Ag    KAg    Ag    Ag   2Ag   (;L4Bg  uwsBg  uwBg  7Bg  s6Cg h0{Cg ZACi   i   gP?gö)$@gԎgشa@g]/Qfg)@gU(+gO2NNQ>g?P5>c         C   s   t  |   } | |  k rJ | d k r3 t d   n  | t k rJ t | Sn  |  d k  rr t t |   t d |   S|  d 8}  t d } x1 t d t	 d  D] } | t | |  | 7} q W|  t	 d } d | |  d t
 j |  | Sd  S(   Ni    s   gamma function poleg      ?i   g      ?i   g'@(   t   intt   ZeroDivisionErrort   _max_exact_gammat   _exact_gammaR$   R"   t   _gamma_realt
   _lanczos_pt   ranget
   _lanczos_gR   t   exp(   R   t   _intxR    t   it   t(    (    s+   lib/python2.7/site-packages/mpmath/math2.pyR1      s    

c         C   s   |  j  s t t |  j   S|  j d k  rG t t |   t d |   S|  d 8}  t d } x1 t d t	 d  D] } | t | |  | 7} qo W|  t	 d } d | |  d t
 j |  | Sd  S(   Ng      ?i   g      ?i    i   g'@(   R   R   R1   R   R$   R&   t   _gamma_complexR2   R3   R4   R   R5   (   R   R    R7   R8   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyR9      s    	

c         C   s/   y d t  |   SWn t k
 r* |  d SXd  S(   Ng      ?g        (   t   gammaR.   (   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   rgamma   s    c         C   s   t  |  d  S(   Ng      ?(   R:   (   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt	   factorial   s    c         C   s8   t  |   t k r" t j d |   St j |  j |  j  S(   Ng        (   R    R   R   t   atan2R   R   (   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   arg   s    c         C   s  t  |   t t f k rQ y t |   }  WqQ t t f k
 rM t |   }  qQ Xn  y |  j } |  j } Wn t k
 r |  } d } n X| d k  rt |   d k  r t	 t
 |    } | d k r | j   } n  | Sd |  } y | j } | j } Wn t k
 r| } d } n Xt |  } | d k r7d } n | d k  rLd } n d } t d t |  d t |  t t	 t | |   t |  d t | | S|  d k s|  d k r|  d Sd }	 x0 t |   d	 k  r|	 t	 |   8}	 |  d 7}  qWd
 |  d t	 |   |  }
 d |  } | | } |
 d | 7}
 | | 9} |
 d | 7}
 | | 9} |
 d | 7}
 | | 9} |
 d | 7}
 | | 9} |
 d | 7}
 | | 9} |
 d | 7}
 | | 9} |
 d | 7}
 | | 9} |
 d | 7}
 |
 |	 S(   Ng        g      ?i    i   iy              ?g      ?g       @i   gdg?gUUUUUU?gllfgJ?g88Cg#+K?g}<ٰj_gAAz?gSˆB(   R    R   R   R   R   R   R   t   AttributeErrort   absR   R:   t	   conjugateR   R$   t   logpiR(   t   loggamma(   R   t   xrealt   ximagt   vR   t   ret   imt   refloort   imsignt   pt   sR    t   r2(    (    s+   lib/python2.7/site-packages/mpmath/math2.pyRC      sp    	

	
		S

 
 
 
 
 
 
 
gUUUUUU?ggAAp?gqg|?gYYg^^^^^^ܿg柛n@gLQt:c         C   s   t  |   } | |  k r6 | d k r6 t d   q6 n  |  d k  r_ d |  }  t t |   } n d } x( |  d k  r | d |  8} |  d 7}  qh W|  d } | } x6 t D]. } | | | 8} | d k  r Pn  | | 9} q W| t |   d |  S(	   Ni    s   polygamma poleg      ?g      ?g        g      $@ig#B;(   R-   R.   R$   R,   t
   _psi_coeffR   (   R   R6   RL   t   x2R8   t   c(    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   _digamma_real;  s&    

c         C   s   |  j  s t t |  j   S|  j d k  rH d |  }  t t |   } n d } x. t |   d k  r~ | d |  8} |  d 7}  qQ W|  d } | } x< t D]4 } | | | 8} t |  d k  r Pn  | | 9} q W| t j	 |   d |  S(   Ng      ?g      ?g        g      $@ig#B;(
   R   R   RQ   R   R$   R,   R@   RN   R   R   (   R   RL   RO   R8   RP   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   _digamma_complexQ  s"    	

gS  ?g}^.@gCGb@g߸G?g1R5?gߵy?gLy~F?goO$y?gŕX3=?ga	o
@ghr@g-@gF@gv#o?g,?gE㦰u?g󟿑?gan$hI?c         C   s1   |  d } x  |  d D] } | | | } q W| S(   Ni    i   (    (   t   coeffsR   RK   RP   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   _polyval  s    
c         C   s   |  |  } |  } } d } xr t  |  d k r | | | 9} | | | | d 8} | d 7} | | | 9} | | | | d 7} | d 7} q Wd | S(   Ni   gFFg<gmBP?(   R@   (   R   RO   RL   R8   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   _erf_taylor  s    


c         C   s)   t  |  |   t t |   t t |   S(   N(   R5   RT   t   _erfc_coeff_Pt   _erfc_coeff_Q(   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt	   _erfc_mid  s    c         C   s   |  |  } t  |  |  d } d | } } d } xh t d d d  D]T } | | 8} | | | d 9} | | 7} | | | d 9} t |  d k  rF PqF qF W| | S(	   NgmBP?g      ?g      ?i   i   i   i   gFFg<(   R5   R3   R@   (   R   RO   RF   R    R8   RL   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   _erfc_asymp  s    


c         C   sh   t  |   }  |  |  k r |  S|  d k  r4 t |   S|  d k r^ |  d k rP d Sd t |   St |   S(   s   
    erf of a real number.
    g        g      ?g      @(   R   t   erfRX   RU   (   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyRZ     s    c         C   s   t  |   }  |  |  k r |  S|  d k  rG |  d k  r8 d Sd t |   S|  d k r] t |   S|  d k rs t |   Sd t |   S(   s    
    erfc of a real number.
    g        g      g       @g      "@g      ?(   R   t   erfcRY   RX   RU   (   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyR[     s    

gt?gdsp?gtg+K ?grҹ?g+K gvV?g5@}?gvVgL?g=Y?gLgj?g{y?gjgM&?gu85?gM&g?gN?ggұ,n?gT!~?gұ,ngqE?g
sjΦ?gqEgu=8|
?gr?gu=8|
gY֮sj?gʴ?gY֮sjgc#?g1?gc#g,?gN@?g,gԦV;?gK?gԦV;gW99?g)ǰ?gW99ݿgN%؟N?gۿ78a?gN%؟Nٿgׄ?g?gׄԿgQ'p_?g,J?gQ'p_пg^>?gKX?g^>ǿg\S;S?gQSβ?g\S;Sg|?gM_6?g|ꢿg      D@c   	      C   s+  d |  } d } } d } x< | | | 9} | | 7} t  |  d k  rK Pn  | d 7} q W| t |   |  } | r t |   t k r |  j } |  j } n |  } d } | d k r'| d k r'| t d 7} q'nU t |   t k r'|  j d k r| t d 7} n  |  j d k  r'| t d 8} q'n  | S(   Ng      ?i   gؗҜ<g        y              ?i    (   R@   R5   R    R   R   R   R$   (	   R   t   _e1R    RL   R8   t   kRF   t   zrealt   zimag(    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   ei_asymp  s0    


	c         C   s   |  } } d } xF | |  | } | | } t  |  d k  rA Pn  | | 7} | d 7} q W| t 7} | r} | t |   7} nM t |   t k s |  j d k r | t t  |    7} n | t j |   7} | S(   Ni   gFFg<i   g        (   R@   t   eulerR   R    R   R   R   R   (   R   R\   RL   R8   R]   t   term(    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt	   ei_taylor  s     



!c         C   s  t  |   } | t t f k rc y t |   }  t } Wqc t t f k
 r_ t |   }  t } qc Xn  |  sn t St |   } | t k r t |  |  S| d k s | t k r |  d k r t	 |  |  S| t k r |  j
 d k r |  | } t	 | |  } n t |  | } t | |  } | |  d } | |  d } d } t  |   t k rXt j }	 n	 t j }	 x: t D]2 \ }
 } | |
 | } | | |	 |  | 7} qhW| | | 8} | S(   Ng       @g        g      ?(   R    R   R   R   R   t   INFR@   t   EI_ASYMP_CONVERGENCE_RADIUSR`   Rc   R   R   R5   R   t   gauss42(   R   R\   t   typezt   abszt   zreft   reft   Ct   DRL   t   _expR   t   wR8   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   ei'  s>    
$
	c         C   s   t  |   } t  |   t t f k ri y t |   }  t } Wqi t t f k
 re t |   }  t } qi Xn  | t k r |  j r t |  j d  }  n  t |  d t S(   Ng        R\   (	   R    R   R   R   R   R   R   Ro   t   True(   R   Rg   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   e1L  s    
g      g        gSbQ?gH*2Q?g|ʎA?gE	G?g92"?gcj?g9?g[:?gH1?g,[
?g ?g+9@ ?g  ?gL ?g9 ?gNe  ?ga;  ?g  ?g֕  ?g1@  ?g    ?gZ>   ?g   ?g   ?gA   gpgp 6g| Upg %gE3+Ӿgf{g'(
gѲG]g/"=g{%gh{srg9D"glXxkվg%ygծ*geuy-g]u:=g h#%.Jg`5'>>g^ҹgU3 gPF; ?g2Mg=Ƨ_ΚcgviT{?g\?gH$  ?ggI;g.k^>gPNg/wogS' ?g7z2Mg)cg?g|ɐ?g      ?c         C   s  t  |  t t f  s y t |   }  Wq t t f k
 r y, t |   }  |  j sf t t |  j   SWn t t f k
 r n Xt	  q Xn  |  d k r t d   n  |  d k r d d |  d |  St |   } | |  k r| d k r t
 | S| d sd	 Sn  |  d	 k rRd |  t |  d t d
 |   t d |   t d |   S|  d k r|  d k rt t |   |  d St t |   |  d St t |   t t |   } d d |  d |  d |  | S(   s.   
    Riemann zeta function, real argument
    i   s   zeta(1) polei   g      ?g       @g      @i    i   g        g      ?g      @(   t
   isinstanceR   R-   R   R   R   R   t   zetaR   t   NotImplementedErrort	   _zeta_intR$   R"   R1   RT   t   _zeta_0t   _zeta_1t   _zeta_Pt   _zeta_Q(   RL   R   R   (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyRs     s:    	
>g      (	   gP?gö)$@gԎgشa@g]/Qfg)@gU(+gO2NNQ>g?P5>(   gt?gdsp?(   gtgdsp?(   g+K ?grҹ?(   g+K grҹ?(   gvV?g5@}?(   gvVg5@}?(   gL?g=Y?(   gLg=Y?(   gj?g{y?(   gjg{y?(   gM&?gu85?(   gM&gu85?(   g?gN?(   ggN?(   gұ,n?gT!~?(   gұ,ngT!~?(   gqE?g
sjΦ?(   gqEg
sjΦ?(   gu=8|
?gr?(   gu=8|
gr?(   gY֮sj?gʴ?(   gY֮sjgʴ?(   gc#?g1?(   gc#g1?(   g,?gN@?(   g,gN@?(   gԦV;?gK?(   gԦV;gK?(   gW99?g)ǰ?(   gW99ݿg)ǰ?(   gN%؟N?gۿ78a?(   gN%؟Nٿgۿ78a?(   gׄ?g?(   gׄԿg?(   gQ'p_?g,J?(   gQ'p_пg,J?(   g^>?gKX?(   g^>ǿgKX?(   g\S;S?gQSβ?(   g\S;SgQSβ?(   g|?gM_6?(   g|ꢿgM_6?(Z   t   __doc__t   operatorR   R   R$   t   et   sqrt2t   sqrt5t   phit   ln2t   ln10Ra   t   catalant   khinchint   aperyRB   R   R   R   R   R   R   R   R   R   t   powR5   R   R   t   tant   acost   asint   atant   cosht   sinht   tanhR   R   t   cos_sint   cbrtR!   R"   R%   R&   R'   R)   R(   R+   R,   Rd   t   NINFt   NANt   EPSR0   t   lenR/   R4   R2   R1   R9   R:   R;   R<   R>   RC   RN   RQ   RR   t   digammaRV   RW   RT   RU   RX   RY   RZ   R[   Rf   Re   t   FalseR`   Rc   Ro   Rq   Ru   Rx   Ry   Rw   Rv   Rs   (    (    (    s+   lib/python2.7/site-packages/mpmath/math2.pyt   <module>   s|  														
	

  						8										%												