
    "`F                        d dl mZ  G d de      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ed        Zed        Zed        Zed        Zed        Zed        Zed        Zed6d       Zed        Zed        Zed        Zed        Zed        Zed        Zed7d       Zed8d       Zed        Zed        Zed         Zed!        Z ed"        Z!ed#        Z"ed$        Z#ed9d&       Z$ed'        Z%ed(        Z&ed)        Z'ed*        Z(d+ Z)dd%l*Z*dd%l+Z+d, Z,d- Z-ed7d.       Z.ed6d/       Z/d8d0Z0ed1        Z1ed2        Z2ed3        Z3ed8d4       Z4ed8d5       Z5y%):   )xrangec                   v    e Zd ZdZi ZdZd Ze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)SpecialFunctionsa  
    This class implements special functions using high-level code.

    Elementary and some other functions (e.g. gamma function, basecase
    hypergeometric series) are assumed to be predefined by the context as
    "builtins" or "low-level" functions.
    gP?c           
         | j                   }|j                  D ]'  }|j                  |   \  }}|j                  |||       ) | j                  d      | _        | j                  d      | _        | j                  d      | _        | j                  d      | _        | j                  d      | _        | j                  d      | _	        | j                  d      | _
        | j                  d      | _        | j                  d	      | _        | j                  d
      | _        | j                  d      | _        | j                  d      | _        | j                  d      | _        | j                  d      | _        | j                  d      | _        | j                  d      | _        | j                  d      | _        i | _        | j,                  j/                  dddddddd       | j1                  | j2                        | _        y )N)   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
   argconjrootpsizetafibfac)phase	conjugatenthroot	polygammahurwitz	fibonacci	factorial)	__class__defined_functions_wrap_specfun_mpqmpq_1mpq_0mpq_1_2mpq_3_2mpq_1_4mpq_1_16mpq_3_16mpq_5_2mpq_3_4mpq_7_4mpq_5_4mpq_1_3mpq_2_3mpq_4_3mpq_1_6mpq_5_6mpq_5_3_misc_const_cache_aliasesupdatememoizezetazerozetazero_memoized)selfclsnamefwraps        </usr/lib/python3/dist-packages/mpmath/functions/functions.py__init__zSpecialFunctions.__init__   s   nn)) 	-D++D1GAtdAt,	- YYu%
YYu%
yy'yy'yy'		&)		&)yy'yy'yy'yy'yy'yy'yy'yy'yy'yy'!# 
  
 	 "&dmm!<    c                     t        | ||       y N)setattr)r:   r;   r<   r=   s       r>   r    zSpecialFunctions._wrap_specfun=   s    T1r@   c                     t         rB   NotImplementedErrorctxnzs      r>   _besseljzSpecialFunctions._besseljD   s    #66r@   c                     t         rB   rE   rH   rJ   s     r>   _erfzSpecialFunctions._erfE   s    //r@   c                     t         rB   rE   rM   s     r>   _erfczSpecialFunctions._erfcF       00r@   c                     t         rB   rE   )rH   rJ   as      r>   _gamma_upper_intz!SpecialFunctions._gamma_upper_intG   s    +>%>r@   c                     t         rB   rE   rG   s      r>   _expint_intzSpecialFunctions._expint_intH   s    &9 9r@   c                     t         rB   rE   rH   ss     r>   _zetazSpecialFunctions._zetaI   rQ   r@   c                     t         rB   rE   )rH   rY   rS   rI   derivativesreflects         r>   _zetasum_fastzSpecialFunctions._zetasum_fastJ   s    AT;Tr@   c                     t         rB   rE   rM   s     r>   _eizSpecialFunctions._eiK       ..r@   c                     t         rB   rE   rM   s     r>   _e1zSpecialFunctions._e1L   ra   r@   c                     t         rB   rE   rM   s     r>   _cizSpecialFunctions._ciM   ra   r@   c                     t         rB   rE   rM   s     r>   _sizSpecialFunctions._siN   ra   r@   c                     t         rB   rE   rX   s     r>   _altzetazSpecialFunctions._altzetaO   s     33r@   N)__name__
__module____qualname____doc__r   THETA_Q_LIMr?   classmethodr    rK   rN   rP   rT   rV   rZ   r^   r`   rc   re   rg   ri    r@   r>   r   r      sV     
 K(=V   7/0>90T....3r@   r   c                 D    | dft         j                  | j                  <   | S )NTr   r   rj   r<   s    r>   defun_wrappedrt   Q   s     56W&&qzz2Hr@   c                 D    | dft         j                  | j                  <   | S )NFrr   rs   s    r>   defunrv   U   s     56X&&qzz2Hr@   c                 <    t        t        | j                  |        | S rB   )rC   r   rj   rs   s    r>   defun_staticrx   Y   s    ajj!,Hr@   c                 >    | j                   | j                  |      z  S rB   )onetanrM   s     r>   cotr|   ]       #''!*,,r@   c                 >    | j                   | j                  |      z  S rB   )rz   cosrM   s     r>   secr   `   r}   r@   c                 >    | j                   | j                  |      z  S rB   )rz   sinrM   s     r>   cscr   c   r}   r@   c                 >    | j                   | j                  |      z  S rB   )rz   tanhrM   s     r>   cothr   f       388A;..r@   c                 >    | j                   | j                  |      z  S rB   )rz   coshrM   s     r>   sechr   i   r   r@   c                 >    | j                   | j                  |      z  S rB   )rz   sinhrM   s     r>   cschr   l   r   r@   c                 `    |s| j                   dz  S | j                  | j                  |z        S )N      ?)piatanrz   rM   s     r>   acotr   o   s*    vv|xx!$$r@   c                 >    | j                  | j                  |z        S rB   )acosrz   rM   s     r>   asecr   v       #''A+..r@   c                 >    | j                  | j                  |z        S rB   )asinrz   rM   s     r>   acscr   y   r   r@   c                 `    |s| j                   dz  S | j                  | j                  |z        S )Ny              ?)r   atanhrz   rM   s     r>   acothr   |   s*    vv}yy1%%r@   c                 >    | j                  | j                  |z        S rB   )acoshrz   rM   s     r>   asechr          ))CGGaK00r@   c                 >    | j                  | j                  |z        S rB   )asinhrz   rM   s     r>   acschr      r   r@   c                     | j                  |      }|r| j                  |      r|S | j                  |      r|dkD  r| j                  S | j                   S |t	        |      z  S )Nr	   )convertisnan_is_real_typerz   absrH   xs     r>   signr      sX    AA		!
q577NGG8Os1v:r@   c                     |dk(  r| j                  |      S | j                  |      }| j                  |      }| j                  ||      S Nr   )agm1r   _agm)rH   rS   bs      r>   agmr      sA    Avxx{AAAA88Aq>r@   c                 d    | j                  |      rd|z  S |s|dz   S | j                  |      |z  S r   )isinfr   r   s     r>   sincr      s4    
yy|s
s
771:a<r@   c                 ~    | j                  |      rd|z  S |s|dz   S | j                  |      | j                  |z  z  S r   )r   sinpir   r   s     r>   sincpir      s=    
yy|s
s
99Q<""r@   c                      s j                   S  j                         j                   k  rddz  z  z   S  j                   fdd      S )Nr   r   c                  <    t         j                        dg      S N)iterexpr   s   r>   <lambda>zexpm1.<locals>.<lambda>   s    dCGGAJr?&; r@   r   )zeromagprecsum_accuratelyr   s   ``r>   expm1r      sK    xx
wwqzSXXI3q!t8|;A>>r@   c                     |s| j                   S | j                  |      | j                   k  r|d|dz  z  z
  S | j                  | j	                  d|d| j                  z              S )Nr   r   r   r   )r   r   r   logfaddr   s     r>   log1pr      s\    xx
wwqzSXXI3q!t8|77388Aqqz8233r@   c                 V   | j                   }| j                  }z  |z
  } ||      }|dkD  r|S |srdv r| j                        r|S |z
  } |      }| j                        }	| ||	      z   | j                   k  r|	z  |	z  dz  dz  z   S | j                  fdd      S )Ni)r   r   y              ?y             r   c                  $    t         z  dg      S r   )r   )r   ys   r>   r   zpowm1.<locals>.<lambda>   s    dAqD":&6 r@   r   )r   rz   isintlnr   r   )
rH   r   r   r   rz   wMx1magylnxs
    ``       r>   powm1r      s    
''C
''C	1s
AAA2vq,,1H	
SBq6D
&&)Cc#h#(("1uAz!|##6::r@   c                 "   t        |      }t        |      }||z  }|s| j                  S d|z  |k(  r| j                   S d|z  |k(  r| j                  S d|z  d|z  k(  r| j                   S | j                  d| j	                  |      z  |z        S )Nr   r   r
   )intrz   jexpjpimpf)rH   krI   s      r>   _rootof1r      s    AAAAFAww	
1x	
1uu	
1!v::a
l1n%%r@   r	   c                    t        |      }| j                  |      }|r|dz  rDd|z  |dz
  k(  r9| j                  |      s(| j                  |      dk  r| j	                  | |       S | j
                  }	 | xj
                  dz  c_        | j	                  ||d      | j                  ||      z  }|| _        |S | j                  ||      S # || _        w xY w)Nr   r   r	   
   )r   r   imrer   r   r   _nthroot)rH   r   rI   r   r   vs         r>   r   r      s    AAAAEacQqSj366!9366!9q=HHaRO##xx	HHNHAq!CLLA$66ACHr	<<1 CHs   5;C 	Cc                    | j                   }| j                  }	 | xj                  dz  c_        |r6t        |      D cg c]!  } |||      dk(  s| j                  ||      # }}n(t        |      D cg c]  }| j                  ||       }}|| _        |D cg c]  }| c}S c c}w c c}w # || _        w xY wc c}w )Nr   r   )_gcdr   ranger   )rH   rI   	primitivegcdr   r   r   r   s           r>   	unitrootsr      s    
((C88DB,1!HFqAaAa"FAF -2!H5qa"5A5?1QB? G 6s4   $B1 B'B'$B1 4B,B1 
B='
B1 1	B:c                     | j                  |      }| j                  |      }| j                  |      }| j                  ||      S rB   )r   _re_imatan2)rH   r   r   r   s       r>   r   r     s:    AA	B	B99Rr@   c                 6    t        | j                  |            S rB   )r   r   r   s     r>   fabsr     s    s{{1~r@   c                 X    | j                  |      }t        |d      r|j                  S |S )Nreal)r   hasattrr   r   s     r>   r   r     s'    AAq&vvHr@   c                 l    | j                  |      }t        |d      r|j                  S | j                  S )Nimag)r   r   r   r   r   s     r>   r   r     s+    AAq&vv88Or@   c                 h    | j                  |      }	 |j                         S # t        $ r |cY S w xY wrB   )r   r   AttributeErrorr   s     r>   r   r      s4    AA{{} s   # 11c                 F    | j                  |      | j                  |      fS rB   )r   r   rM   s     r>   polarr   (  s    HHQK$$r@   c                 D    | | j                   | j                  |       z  S rB   )mpccos_sin)rH   rphis      r>   rectr   ,  s!    wswwC()))r@   Nc                     || j                  |      S | j                  dz   }| j                  ||      | j                  ||      z  S )N   r   )r   r   )rH   r   r   wps       r>   r   r   0  sG    yvvay	BB66!"6qr 222r@   c                 &    | j                  |d      S )Nr   )r   r   s     r>   log10r   7  s    771b>r@   c                 H    | j                  |      | j                  |      z  S rB   )r   )rH   r   r   s      r>   fmodr  ;  s    ;;q>CKKN**r@   c                      || j                   z  S rB   degreer   s     r>   degreesr  ?      szz>r@   c                      || j                   z  S rB   r  r   s     r>   radiansr	  C  r  r@   c                 (   |s|s|S | j                   |z   S || j                  k(  r)|dk(  r|S |d|z  | j                  z  | j                  z  z   S || j                   k(  r&| d|z  dz   | j                  z  | j                  z  z   S | j	                  |      S )Nr	   r   r   )ninfinfr   r   r   )rH   rJ   r   s      r>   _lambertw_specialr  G  s    Hxx!|CGG|6Hqs366z#%%'''CHH}qs1ucffnSUU***66!9r@   c                    d}t        | d      r7t        | j                        }| j                  }|rd|dk  z  }t        |      }nt        |       }d}d}|sd}t	        ||      } |dk(  rd|cxk  rdk  rn nd|cxk  rdk  rn n|r@|d	kD  rd
d| dz
  z  z   S |dkD  rdd| dz
  z  z   S |dk  rdd| dz
  z  z   S |dk  rdd| dz
  z  z   S |dk  r|dk\  rdd| dz   z  z   S dd| dz   z  z   S d}|s||kD  r|} |dk  rdd | |z
  d!z  z  z   d"| |z
  z  z
  S |d!k  r| S d#d$| z  z   S |s1|dkD  r,t        j                  |      }t        j                  |      }nt        j                  |       }t        j                  |      }n|dk(  rd}|s||cxk  rdk  rn n|} |dk\  r*|d%k  r%d&|cxk  rdk  rn ndd | |z
  d!z  z  z
  d"| |z
  z  z
  S |s=d|cxk  rdk  r2n n/t        j                  |       }|t        j                  |       z
  S |dk(  r |s|dk  rt        j                  |       d'z
  }nt        j                  |       d(z
  }t        j                  |      }z
  ||z  z   ||d)z
  z  d)|d)z  z  z  z   S )*Nr	   r   r   g        g      g      @g      g      @      ?yx&1?p=
ף?yh|?5?ʡEƿy      ?      @g      ?y)\(?&1?y      ?L7A`y      ?      ?yx&1?p=
ףyh|?5?ʡE?y      ?      g      пy)\(?&1ʿy      ?L7A`?y      ?      g      y'1ZԿq=
ףp?yM`"r   y'1ZԿq=
ףpyM`"?g2,6V׿gɿg4@r   g}tp?g?g333333?g?g333333y        -DT!	@y        -DT!@r   )r   floatr   r   complexmathr   cmath)rJ   r   	imag_signr   r   r   L1L2s           r>   _lambertw_approx_hybridr  Z  s   Iq&!&&MFFQI!H!H	!AAv!>c>dQnnt8\lQ	]5S$SSt8\lQ	]5S$SSu9l|am6T%TTu9l|am6T%TT4x>(]QqS,AAA(]QqS,AAA"A1q54x,acCZ77:JAaC:PPP3wqQ;q3w!B488B<b1BEIIbMr	
bq1{s{ANCD1OtO(!A#336F!6LLLtq31"B"%%Bq3wYYq\$77YYq\$772B7RU?RAY"a%000r@   c                 J     j                        }d|cxk  rdk  rn nd|cxk  rdk  rn n|dk  rt        dz         dk  r|dk(  s4|d	k(  r j                        dk\  s|dk(  r j                        dk  r j                   fd
      } j                  |       } xj                  |z  c_         j                  d j                  z  dz   z        } xj                  |z  c_         j                  d	       j                  d      d j                  d       j                  d	      d}|dk7  r| } j                  }	t        t        d|            D ]  vrf j                  fdt        d      D              |<   dz
  dz
     dz  |dz
     dz  z   z  dz   z  |   dz  z
  dz
     dz   z  z
  <      |z  z  }
|	|
z  }	 j                  |
      | k  r|	dfc S dz    xj                  |dz  z  c_        |	dfS |dk(  s|d	k(  rt        |      dfS |dk(  r2|d	k  r
dz
  z  dfS  j                        } j                  |      }n|d	k(  rW j                        sFd j                        cxk  rdk  r,n n) j                         }| j                  |       z
  dfS  j                        d j                  z  |z  z   } j                  |      }||z
  ||z  z   ||dz
  z  d|dz  z  z  z   dfS )z
    Return rough approximation for W_k(z) from an asymptotic series,
    sufficiently accurate for the Halley iteration to converge to
    the correct value.
    ii  ii  r   g,6V?g?r	   r   c                  *     j                  d      gS r   )r   rM   s   r>   r   z"_lambertw_series.<locals>.<lambda>  s    Aswwr{3C r@   r   r   c              3   @   K   | ]  }|   d z   |z
     z    yw)r   Nrp   ).0r   lus     r>   	<genexpr>z#_lambertw_series.<locals>.<genexpr>  s%     'K!!Qqs1uX'Ks   r   TFg,6V׿y               @)r   r   r   r   r   sqrter   r   r   maxfsumr  r   r   r   )rH   rJ   r   tolmagzdeltacancellationprS   rY   termr  r  r  r  s   ``           @@r>   _lambertw_seriesr)    s    771:DdSuq/4/!8A../$6Av!r'cggajAoq&cggaj1n**+CD #L(HHQa	]+L(wwr{cggaj1wwqzSWWR[16AHH  Al 34 Az"xx'Kva{'KK! !!a!fQhq1vax&78!A#>qtAvEa!faPQclR!Q4!Q$;DIAwwt}t+ $wFA L!O+%x6Q"W*1a0%77Av"9ac7E>!VVAYVVBZ	
b#''!*+<swwqz+MA+MVVQBZCFFB3K&& VVAYCFF1$VVBZ7RU?RAY"a%00%77r@   c                    | j                  |      }t        |      }| j                  |      st        | ||      S | j                  }| xj                  d| j                  |xs d      z   z  c_        | j                  }|dz
  }t        | |||      \  }}|s| j                  d      }t        d      D ]i  }	| j                  |      }
||
z  }||z
  }||||
z   ||z   |z  ||z  |z   z  z
  z  z
  }| j                  ||z
        | j                  |      |z
  k  r|} n|}k 	dk(  r| j                  d|z         || _        |S )Nr   r   r   r   d   z1Lambert W iteration failed to converge for z = %s)r   r   isnormalr  r   r   r)  r   r   r   warn)rH   rJ   r   r   r   r#  r   donetwoiewwewwewzwns                 r>   lambertwr5    sF   AAAA<<? a++88DHHSWWQV!_$$H	B
q&CsAq#.GAtggaj 		ABB$Cq5DT3r61S5$,Ac	"::;;Bwwr!t}c 11		 8HHH1LMCH2Ir@   c                    | j                  |      }|s$| j                  |      r|S  t        |      d      S | j                  |      s3| j                  |      s"| j                  |      s| j                  |      r||z  S |dk(  r|S |dk(  r||dz   z  S |dk(  r| j	                  |      S t        | ||d      | j                  |      z  S )Nr   r   r	   T)r   r   typer   r   _polyexpr   )rH   rI   r   s      r>   bellr9    s    AA99Q<HtAwqz
yy|syy|syy|syy|!tAvaxAva1g~Avcjjm#CAt$swwqz11r@   c                 @      fd} j                  |d      S )Nc               3   p   K   rj                         } d}	 |z  | z   |dz  }| z  |z  } wr   )r   )tr   rH   extrarI   r   s     r>   _termsz_polyexp.<locals>._terms  sM     **Q-Q$(NFA!AA s   36r   )
check_step)r   )rH   rI   r   r=  r>  s   ```` r>   r8  r8    s      f33r@   c                 ^   | j                  |      s3| j                  |      s"| j                  |      s| j                  |      r||z  S |dk(  r||z  S |dk(  r| j                  |      S |dk(  r| j                  |      |z  S |dk(  r| j                  |      |z  |dz   z  S t	        | ||      S )Nr	   r   r   )r   r   r   r   r8  )rH   rY   rJ   s      r>   polyexprA    s    
yy|syy|syy|syy|!tAvaczAvciil"Avcggajl"AvcggajlAaC((CAr@   c                    t        |      }|dk  rt        d      | j                  }|dk(  r|S |dk(  r||z
  S |dk(  r||z   S d}d}d}d}t        d|dz         D ]Z  }||z  r	| j	                  ||z        }	| j                  ||       }
|
r	||
|	z  z  };|	dk(  r||z  }|dz  }K|	dk(  sQ||z  }|dz  }\ |r||kD  r|dz  }|S ||z  }||z  }|S )Nr	   zn cannot be negativer   r   r   )r   
ValueErrorrz   r   moebiusr   )rH   rI   rJ   r'  a_prodb_prod	num_zeros	num_polesdr   r   s              r>   
cyclotomicrJ    s'   AA1u/00AAvAv1uAv1u FFII1QqS\ #1uAqD!A 1a AQT	6aKFNI"WaKFNI#  y FA H KAKAHr@   c                 <   t        |      }|dk  r| j                  S |dz  dk(  r$||dz
  z  dk(  r| j                  S | j                  S dD ]K  }||z  r	||z  d}}|dkD  r%t        ||      \  }}|r| j                  c S |dkD  r%| j	                  |      c S  | j                  |      r| j	                  |      S |dkD  rt        d}	 t        |d|z  z  dz         }|dk  r| j                  S ||z  |k(  r"| j                  |      r| j	                  |      S |dz  }U)a  
    Evaluates the von Mangoldt function `\Lambda(n) = \log p`
    if `n = p^k` a power of a prime, and `\Lambda(n) = 0` otherwise.

    **Examples**

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> [mangoldt(n) for n in range(-2,3)]
        [0.0, 0.0, 0.0, 0.0, 0.6931471805599453094172321]
        >>> mangoldt(6)
        0.0
        >>> mangoldt(7)
        1.945910149055313305105353
        >>> mangoldt(8)
        0.6931471805599453094172321
        >>> fsum(mangoldt(n) for n in range(101))
        94.04531122935739224600493
        >>> fsum(mangoldt(n) for n in range(10001))
        10013.39669326311478372032

    r   r	   r   )
r
   r   r                        l       73Me'r  r   )r   r   ln2divmodr   isprimerF   )rH   rI   r'  qr   r   s         r>   mangoldtrW  ;  s3   0 	AA1uxx1uz!9>GG8O88O
 * 1u61qAa%a|188O a% 66!9 {{1~vvay6z!!	A
BqD	C q588O6Q;{{1~vvay 	Q r@   c                     | j                  t        |      t        |            }|rt        |      S | j                  |      S rB   )
_stirling1r   r   rH   rI   r   exactr   s        r>   	stirling1r\  w  4    s1vs1v&A1vwwqzr@   c                     | j                  t        |      t        |            }|rt        |      S | j                  |      S rB   )
_stirling2r   r   rZ  s        r>   	stirling2r`    r]  r@   )r   )r	   )FrB   )6libmp.backendr   objectr   rt   rv   rx   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)  r5  r9  r8  rA  rJ  rW  r\  r`  rp   r@   r>   <module>rc     s>   "L4v L4\  ,  , ,  , ,  , .  . .  . .  .% %  .  . .  .& &  0  0 0  0	 	     # # ? ? 4 4 ; ;* & &  "             % % * * 3 3   + +       =1~48l  8 2 2
4   ( (T 9 9v    r@   