ó
<Zc           @   sß  d  d l  m Z m Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d  e d „ ƒ Z e d „  ƒ Z	 e d „  ƒ Z
 e d	 d  d
 „ ƒ Z e d	 d  d „ ƒ Z e d	 d  e d „ ƒ Z e d	 d e d „ ƒ Z e e d „ ƒ Z e e d „ ƒ Z e e d „ ƒ Z e d „  ƒ Z e e d „ ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z d S(   i   (   t   defunt   defun_wrappedc         C   sk   |  j  | d ƒ } d |  j |  j ƒ | |  j d d | ƒ } |  j | ƒ sg |  j | ƒ |  j } n  | S(   Niÿÿÿÿi   i   i   (   i   i   (   i   i   (   t   square_exp_argt   sqrtt   pit   hyp1f1t   _ret   _imt   j(   t   ctxt   zt   z2t   v(    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   _erf_complex   s
    -c         C   s±   |  j  | ƒ d k rn |  j | ƒ } |  j | d t ƒ} |  j | ƒ |  j |  j ƒ |  j d d | ƒ } n d |  j | ƒ } |  j	 | ƒ s­ d |  j
 | ƒ |  j } n  | S(   Ni   t   exacti   (   i   i   (   i   i   (   t   reR   t   fnegt   Truet   expR   R   t   hyperuR   R   R   R   (   R	   R
   R   t   nz2R   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   _erfc_complex   s    5c         C   s£   |  j  | ƒ } |  j | ƒ rF y |  j | ƒ SWqF t k
 rB qF Xn  |  j | ƒ r– | j r– y  t | ƒ |  j | j ƒ ƒ SWq– t k
 r’ q– Xn  |  j | ƒ S(   N(	   t   convertt   _is_real_typet   _erft   NotImplementedErrort   _is_complex_typet   imagt   typet   realR   (   R	   R
   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   erf   s     c         C   s£   |  j  | ƒ } |  j | ƒ rF y |  j | ƒ SWqF t k
 rB qF Xn  |  j | ƒ r– | j r– y  t | ƒ |  j | j ƒ ƒ SWq– t k
 r’ q– Xn  |  j | ƒ S(   N(	   R   R   t   _erfcR   R   R   R   R   R   (   R	   R
   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   erfc'   s     c         C   s   |  j  d d } | rM |  j | | d | ƒ} |  j |  j | d | ƒ} n |  j | | d | ƒ} | d k rŒ |  j | | d t ƒ} n  | S(   Ni   i   t   preci   R   (   R!   t   fmult   fdivt   oneR   (   R	   R
   t   multt
   reciprocalR!   R   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyR   6   s    c         C   sr   | s
 | S|  j  | ƒ } d |  j |  j ƒ | |  j d d | ƒ } |  j | ƒ sn |  j | ƒ |  j } n  | S(   Ni   i   i   (   i   i   (   i   i   (   R   R   R   R   R   R   R   (   R	   R
   R   R   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   erfiB   s    -c            s*  ˆ  j  ˆ ƒ } | ˆ k s3 | d k  s3 | d k r@ ˆ  j d ƒ S| ‰ ˆ sP ˆ Sˆ d k rc ˆ  j Sˆ d k rv ˆ  j St ˆ ƒ d k  r¡ d ˆ d d ˆ } n^ ˆ  j d ˆ  j t ˆ ƒ d d ƒ } ˆ  j ˆ ƒ ˆ  j | ˆ  j | ƒ ƒ ˆ  j d ƒ } ˆ  j	 d	 7_	 ˆ  j
 ‡  ‡ f d
 †  | ƒ S(   Niÿÿÿÿi   s*   erfinv(x) is defined only for -1 <= x <= 1gÍÌÌÌÌÌì?g¨o™Óe1á?i   g†åÏ·ê?i   i
   c            s   ˆ  j  |  ƒ ˆ S(   N(   R   (   t   t(   R	   t   x(    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   <lambda>]   s    (   R   t
   bad_domaint   inft   ninft   abst   lnR   t   signR   R!   t   findroot(   R	   R)   t   xret   at   u(    (   R	   R)   s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   erfinvL   s     $   (6i    c         C   sI   |  j  | ƒ } |  j | | d d | d ƒ | |  j d |  j ƒ S(   Ni   (   R   R   R   R   (   R	   R)   t   mut   sigma(    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   npdf_   s    c         C   sR   | | | |  j  d ƒ } | d k  r9 |  j | ƒ d Sd |  j | ƒ d Sd  S(   Ni   i    i   (   R   R    R   (   R	   R)   R6   R7   R3   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   ncdfd   s    c         C   sp  | | k r d } n8| sw | d k rH | d k rH |  j  | | ƒ } qM| | |  j | d | | d | ƒ | } nÖ |  j | ƒ \ } } | d k rï | |  j k  rÎ |  j 
}	 |  j d 9_ | |	 7} qï | d k  rï |  j | 8_ qï n  | | |  j | d | | d | ƒ }
 | | |  j | d | | d | ƒ } |
 | | } | rl| |  j  | | ƒ :} n  | S(   Ni    i   i   iüÿÿÿ(   t   betat   hyp2f1t   nint_distanceR!   t   eps(   R	   R3   t   bt   x1t   x2t   regularizedR   t   mt   dt   ht   s1t   s2(    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   betaincl   s(    	/
((c         C   s•  t  | ƒ } |  j | ƒ } | d  k r9 |  j } t } n |  j | ƒ } | |  j k } | d  k ru |  j } t } n |  j | ƒ } | |  j k } | pœ | sô | rç |  j | ƒ d k  rÁ |  j S|  j | ƒ d k rÝ |  j S|  j Sn  |  j	 | ƒ S| | k r|  j S|  j | ƒ |  j | ƒ k r<|  j
 | | | | ƒ S| r_| r_|  j | | | | ƒ 
S| rx|  j | | | ƒ S| r‘|  j | | | ƒ Sd  S(   Ni    (   t   boolR   t   Nonet   zerot   FalseR,   R   R$   t   nant   gammat   gammainct   _gamma3t   _upper_gammat   _lower_gamma(   R	   R
   R3   R>   RA   t   lower_modifiedt   upper_modified(    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyRN   …   s<    				
c            so   ˆ j  | ƒ r" t | ƒ ˆ j ƒ S| g | ‰  ˆ j ˆ d t ƒ‰ ‡  ‡ ‡ ‡ f d †  } ˆ j | | g ƒ S(   NR   c            sG   ˆ j  ˆ ƒ ˆ |  g d |  d g g  ˆ  d g d |  g ˆ f } | f S(   Ni   iÿÿÿÿ(   R   (   R
   t   T1(   t   GR>   R	   t   negb(    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyRD   µ   s    @(   t   isnpintR   R,   R   R   t	   hypercomb(   R	   R
   R>   RA   RD   (    (   RU   R>   R	   RV   s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyRQ   ®   s    c            s™  ˆ j  | ƒ r« y… | rƒ ˆ j | ƒ r: t | ƒ ˆ j ƒ Sˆ j } z0 ˆ j d 7_ ˆ j | ˆ ƒ ˆ j | ƒ SWd  | ˆ _ Xn ˆ j | ˆ ƒ SWq« t k
 r§ q« Xn  | d k rÏ ˆ d k rÏ | ˆ d S| d k rÿ ˆ d k só ˆ d k rÿ | ˆ d Sˆ j ˆ d t	 ƒ‰ | g | ‰  y5 ‡  ‡ ‡ ‡ f d †  } ˆ j
 | | g d	 t	 ƒSWn< ˆ j k
 r”‡  ‡ ‡ ‡ f d
 †  } ˆ j
 | | g ƒ SXd  S(   Ni
   i   iÿÿÿÿi    i   y              ð?R   c            sF   |  d } ˆ j  ˆ ƒ ˆ g d | g g  ˆ  d | g g  d ˆ f g S(   Ni   (   R   (   R
   t   r(   RU   R3   R	   t   nega(    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyRD   Ö   s    
t   force_seriesc            ss   g  d |  d g |  g ˆ  g  g  d f } ˆ j  ˆ ƒ ˆ |  g d |  d g g  ˆ  d g d |  g ˆ f } | | f S(   Ni   i    iÿÿÿÿ(   R   (   R
   RT   t   T2(   RU   R3   R	   RZ   (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyRD   Û   s    (Ay      ð¿      ð¿y      ð¿      ð?(   t   isintRW   R   RJ   R!   t   _gamma_upper_intRM   R   R   R   RX   t   NoConvergence(   R	   R
   R3   RA   t   origRD   (    (   RU   R3   R	   RZ   s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyRP   º   s2    	!$c   	      C   s  |  j  | ƒ } | r" | r" |  j SzÏ |  j d 7_ |  j | | d | ƒ} |  j | | d | ƒ} | | } |  j | ƒ t |  j | ƒ |  j | ƒ ƒ d k r¦ | S| sð |  j | d | d | ƒ} |  j | d | d | ƒ} | | } | SWd  |  j d 8_ Xt ‚ d  S(   Ni   RA   iöÿÿÿi    (   RW   RJ   R!   RN   t   magt   maxR   (	   R	   R
   R3   R>   RA   t   poleRT   R\   t   R(    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyRO   á   s"    
4
c         C   s4  |  j  | ƒ rI |  j | ƒ rI y |  j | | ƒ SWqI t k
 rE qI Xn  |  j | ƒ sg |  j | ƒ ro | | S| |  j k r† d | S| d k rÌ |  j | ƒ d k rº t | ƒ |  j ƒ S|  j | d Sn  | d k rê |  j	 | ƒ | S| d k r|  j	 | ƒ | d | d S| | d |  j
 d | | ƒ S(   Ni   i    iÿÿÿÿi   (   R]   R   t   _expint_intR   t   isnanR,   R   R   R$   R   RN   (   R	   t   nR
   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   expintû   s$    c         C   sr   | r? | d k r |  j  S|  j |  j | ƒ ƒ |  j |  j ƒ S| sI | S| d k r\ |  j S|  j |  j | ƒ ƒ S(   Ni   i   (   RJ   t   eiR/   t   ln2R-   (   R	   R
   t   offset(    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   li  s    &c         C   s3   y |  j  | ƒ SWn t k
 r. |  j | ƒ SXd  S(   N(   t   _eiR   t   _ei_generic(   R	   R
   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyRi     s    c      	   C   s}  | |  j  k r | S| |  j k r) |  j S|  j | ƒ d k rý y¥ |  j | } |  j | ƒ |  j d d g g  | d |  j d t ƒ| } |  j	 | ƒ } | d k r» | |  j
 |  j 7} n  | d k  rÞ | |  j
 |  j 8} n  | SWqý |  j k
 rù qý Xn  | |  j d d d d | ƒ |  j } |  j	 | ƒ r`| d |  j | ƒ |  j |  j | ƒ 7} n | |  j t | ƒ ƒ 7} | S(   Ni   t   maxtermsR[   i    i   g      à?(   R,   R-   RJ   Ra   R$   R   t   hyperR!   R   R   R   R   R_   t   hyp2f2t   eulert   logR.   (   R	   R
   RY   R   t   im(    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyRn   &  s*    ;&.c         C   s6   y |  j  | ƒ SWn t k
 r1 |  j d | ƒ SXd  S(   Ni   (   t   _e1R   Rh   (   R	   R
   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   e1B  s    c         C   s3   y |  j  | ƒ SWn t k
 r. |  j | ƒ SXd  S(   N(   t   _ciR   t   _ci_generic(   R	   R
   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   ciI  s    c         C   s  |  j  | ƒ rB | |  j k r% |  j S| |  j k rB |  j d Sn  |  j |  j | d t ƒ} |  j | d t ƒ} d |  j	 | ƒ |  j	 | ƒ } |  j
 | ƒ } |  j | ƒ } | d k rÿ | d k rÜ | |  j d 7} n  | d k  rÿ | |  j d 8} qÿ n  | d k  rN| d k r+| |  j d 7} n  | d k  rN| |  j d 8} qNn  |  j | ƒ r{| d k r{|  j
 | ƒ } n  | S(   Ny              ð?R   g      à?i    y              à?(   t   isinfR,   RJ   R-   R   R"   R   R   R   Ri   R   R   R   (   R	   R
   t   jzt   njzR   t   zrealt   zimag(    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyRx   P  s.           c         C   s3   y |  j  | ƒ SWn t k
 r. |  j | ƒ SXd  S(   N(   t   _siR   t   _si_generic(   R	   R
   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   sid  s    c         C   sE  |  j  | ƒ rF | |  j k r) d |  j S| |  j k rF d |  j Sn  |  j | ƒ d k r|  j |  j | d t ƒ} |  j | d t ƒ} d |  j	 | ƒ |  j	 | ƒ } |  j
 | ƒ } | d k rÚ | d |  j 8} n  | d k  rú | d |  j 7} n  |  j | ƒ r|  j
 | ƒ } n  | S| |  j d d d d
 | | ƒ Sd  S(   Ng      à?g      à¿iÿÿÿÿR   y              à¿i    i   i   i   g      Ð¿(   i   i   (   i   i   (   i   i   (   Rz   R,   R   R-   Ra   R"   R   R   R   Ri   R   R   t   hyp1f2(   R	   R
   R{   R|   R   R}   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyR€   k  s$       c         C   s·   |  j  | d t ƒ} d |  j | ƒ |  j | ƒ } |  j | ƒ } |  j | ƒ } | d k rs | |  j d 7} n@ | d k  r“ | |  j d 8} n  | d k  r³ | |  j d 7} n  | S(   NR   g      à?i    y              à?y              ð?(   R   R   Ri   R   R   R   (   R	   R
   t   nzR   R}   R~   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   chi€  s     c         C   sÃ   |  j  | ƒ d k r |  j | d t ƒ} d |  j | ƒ |  j | ƒ } |  j | ƒ } | d k ry | d |  j 8} n  | d k  r™ | d |  j 7} n  | S| |  j d
 d d d	 | | ƒ Sd  S(   NiÿÿÿÿR   g      à?i    y              à?i   i   i   g      Ð?(   i   i   (   i   i   (   i   i   (   Ra   R   R   Ri   R   R   R‚   (   R	   R
   Rƒ   R   R~   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   shiŽ  s       c         C   su   | |  j  k r |  j d ƒ S| |  j k r8 |  j d ƒ S|  j | d d |  j d	 d
 d |  j d | d d ƒ S(   Ng      à?g      à¿i   i   i   i   i   i   (   i   i   (   i   i   (   i   i   (   R,   t   mpfR-   R   R‚   (   R	   R
   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   fresnels›  s
    c         C   sf   | |  j  k r |  j d ƒ S| |  j k r8 |  j d ƒ S| |  j d d	 d
 |  j d | d d ƒ S(   Ng      à?g      à¿i   i   i   i   i   (   i   i   (   i   i   (   i   i   (   R,   R†   R-   R‚   R   (   R	   R
   (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   fresnelc£  s
    N(    t	   functionsR    R   R   R   R   R    RK   R   R'   R5   R8   R9   RG   RI   RN   RQ   RP   RO   Rh   Rl   Ri   Rn   Rv   Ry   Rx   R   R€   R„   R…   R‡   Rˆ   (    (    (    s<   lib/python2.7/site-packages/mpmath/functions/expintegrals.pyt   <module>   sH   	
(&