ó
µ¤\c           @   sÃ   d  d l  m Z d d l m Z m 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 d S(   i   (   t   xrangei   (   t   defunt   defun_wrappedc         C   sq  g  | D] } |  j  | ƒ ^ q } g  | D] } |  j  | ƒ ^ q) } g  } g  } g  } g  } x. | D]& } | | g |  j | ƒ j | ƒ qc Wx. | D]& } | | g |  j | ƒ j | ƒ q” Wt | ƒ t | ƒ k  rÝ |  j St | ƒ t | ƒ k r›| r‘g  | D]* } | r| d |  j p)| |  j ^ q} g  | D]* } | rV| d |  j p`| |  j ^ q9} |  j |  j | | | | ƒ ƒ |  j S|  j Sn  |  j	 }	 |  j
 }
 z² |
 d |  _
 xV | r| j ƒ  } | j ƒ  } |	 d | | |  j d | ƒ |  j d | ƒ 9}	 qÀWx! | D] } |	 |  j | ƒ 9}	 qWx! | D] } |	 |  j | ƒ :}	 qAWWd  |
 |  _
 X|	 
S(   Ni   i   iÿÿÿÿ(   t   convertt   isnpintt   appendt   lent   zerot   epst   signt	   gammaprodt   inft   onet   prect   popt   gamma(   t   ctxt   at   bt   _infsignt   xt	   poles_numt	   poles_dent   regular_numt   regular_dent   pt   origt   it   j(    (    s:   lib/python2.7/site-packages/mpmath/functions/factorials.pyR
      s@    "" $ $ 77(
			8  
c         C   s  |  j  | ƒ } |  j  | ƒ } |  j | ƒ r= | | } } n  |  j | ƒ rÝ | |  j k rÖ |  j | ƒ rÖ | |  j k r |  j S| d k r” |  j S|  j | ƒ rª |  j S| d k  rÖ |  j |  j	 | ƒ ƒ |  j Sn  |  j S|  j
 | | d d |  j ƒ} |  j | | g | g ƒ S(   Ni    R   i   (   R   t   isinfR   t   _imt   ninft   nanR   t   isintR	   R   t   faddR   R
   (   R   R   t   yt   xy(    (    s:   lib/python2.7/site-packages/mpmath/functions/factorials.pyt   beta)   s"     c         C   sv   |  j  | d d d |  j ƒ} |  j  | d d d |  j ƒ} |  j | | d d |  j ƒ} |  j | g | | g ƒ S(   Ni   R   i   (   R"   R   t   fsubR
   (   R   t   nt   kt   n1t   k1t   nk1(    (    s:   lib/python2.7/site-packages/mpmath/functions/factorials.pyt   binomial=   s    c         C   s5   |  j  | | d d |  j ƒ} |  j | g | g ƒ S(   NR   i   (   R"   R   R
   (   R   R   R'   t   xn(    (    s:   lib/python2.7/site-packages/mpmath/functions/factorials.pyt   rfD   s    c         C   sm   |  j  | d d d |  j ƒ} |  j  |  j | | d d |  j ƒd d d |  j ƒ} |  j | g | g ƒ S(   Ni   R   i   (   R"   R   R&   R
   (   R   R   R'   t   x1t   xn1(    (    s:   lib/python2.7/site-packages/mpmath/functions/factorials.pyt   ffI   s    8c         C   sj   |  j  | ƒ r) | |  j k r" | S|  j Sd | d |  j d |  j | ƒ d d |  j | d d ƒ S(   Ni   i   i   (   R   R   R    t   pit   cospiR   (   R   R   (    (    s:   lib/python2.7/site-packages/mpmath/functions/factorials.pyt   fac2O   s
    c         C   s;  |  j  | ƒ r) | |  j k r" | S|  j S|  j | ƒ r< | S|  j | ƒ r |  j | ƒ d k r |  j |  j | ƒ ƒ r | d St | ƒ d k r» |  j d |  j	 t | ƒ d ƒ 7_ n  |  j
 | ƒ |  j k  r©d | } d |  j } |  j d | ƒ } |  j |  j d |  j |  j | d d | |  j d | ƒ |  j |  j d | ƒ | } |  j d | ƒ |  j | ƒ | | } |  j | ƒ r¥|  j | ƒ } n  | S|  j d d } d } xH t | ƒ | k  sê|  j
 | ƒ d k  r
| |  j | ƒ :} | d 7} qÃW| d 8} |  j d ƒ d } | |  j	 |  j ƒ 8} | | |  j	 d |  j ƒ d 7} | | d d |  j d ƒ d |  j	 | ƒ 7} | d | d d 8} | d }	 }
 xs t d | d ƒ D]^ } |  j d | d ƒ d | | d |	 } t | ƒ |  j k  rPn  |	 |
 9}	 | | 7} qÈW| |  j | ƒ S(   Ni    i   i   i   i   i   i   (   R   R   R    t   isnanR   t   _reR!   t   abst   dpst   logt   reR2   t   expjpiR   t   lnt   polylogt   barnesgt   expt   _is_real_typeR   t   mpft   glaisherR    t	   bernoulliR   (   R   t   zt   wt   pi2t   ut   vt   Nt   Gt   st   z2kt   z2R(   t   t(    (    s:   lib/python2.7/site-packages/mpmath/functions/factorials.pyR>   W   sN    =(
@(*
"0+
c         C   s   |  j  | d ƒ S(   Ni   (   R>   (   R   RD   (    (    s:   lib/python2.7/site-packages/mpmath/functions/factorials.pyt   superfacˆ   s    c         C   sB  | |  j  k r | St | ƒ d k rJ d t |  j t | ƒ d ƒ ƒ } n d } |  j | 7_ |  j | ƒ rü |  j | ƒ d k  rü |  j |  j | ƒ ƒ rü t |  j | ƒ ƒ } |  j	 | d ƒ } | d d d @rá | } n  |  j
 | ƒ rø | d S| S| d } |  j | |  j | ƒ ƒ } |  j | 8_ | |  j | ƒ S(   Ni   i   i   i    i   y                (   R   R7   t   intR9   R   R   R6   R!   R:   t   hyperfact   _is_complex_typeR?   t   loggammaR>   (   R   RD   t   extraR'   t   ht   zp1RH   (    (    s:   lib/python2.7/site-packages/mpmath/functions/factorials.pyRQ   Œ   s$    %=

c         C   s/  |  j  | ƒ } |  j | ƒ } | rG | d k rG |  j |  j | ƒ ƒ S|  j | ƒ } |  j |  j | ƒ ƒ } | rç | | d | | | |  j t | ƒ ƒ } |  j | |  j | ƒ d |  j d ƒ d |  j } | | |  j S| d k  r+t	 |  j | ƒ ƒ } | | | d |  j |  j 7} n  | S(   Ni    i   g      à?(
   R6   R   R<   t	   gamma_oldt   argR7   t   floorR2   R   RP   (   R   RD   R   R   RG   RE   t   giR'   (    (    s:   lib/python2.7/site-packages/mpmath/functions/factorials.pyt   loggamma_old§   s    .6#N(   t   libmp.backendR    t	   functionsR   R   t   FalseR
   R%   R,   R.   R1   R4   R>   RO   RQ   R[   (    (    (    s:   lib/python2.7/site-packages/mpmath/functions/factorials.pyt   <module>   s   $1%