U
    :qLeF                     @   sf  d dl mZ G dd deZdd Zdd Zdd	 Zed
d Zedd Zedd Z	edd Z
edd Zedd Zedd Zedd Zedd Zedd Zedd Zed d! Zed"d# Zedhd%d&Zed'd( Zed)d* Zed+d, Zed-d. Zed/d0 Zed1d2 Zedid4d5Zedjd7d8Zed9d: Zed;d< Zed=d> Zed?d@ Z edAdB Z!edCdD Z"edEdF Z#edkdHdIZ$edJdK Z%edLdM Z&edNdO Z'edPdQ Z(dRdS Z)d3dGl*Z*d3dGl+Z+dTdU Z,dVdW Z-edldXdYZ.edmdZd[Z/dnd\d]Z0ed^d_ Z1ed`da Z2edbdc Z3edodddeZ4edpdfdgZ5dGS )q   )xrangec                   @   s   e Zd ZdZi ZdZdd Zedd Zdd Z	d	d
 Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) 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              
   C   s.  | j }|jD ] }|j| \}}|||| q| d| _| d| _| d| _| d| _| d| _| d| _	| d| _
| d| _| d	| _| d
| _| d| _| d| _| d| _| d| _| d| _| d| _| d| _i | _| jdddddddd | | j| _d S )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_mpqZmpq_1Zmpq_0Zmpq_1_2Zmpq_3_2Zmpq_1_4Zmpq_1_16Zmpq_3_16Zmpq_5_2Zmpq_3_4Zmpq_7_4Zmpq_5_4Zmpq_1_3Zmpq_2_3Zmpq_4_3Zmpq_1_6Zmpq_5_6Zmpq_5_3Z_misc_const_cache_aliasesupdatememoizezetazeroZzetazero_memoized)selfclsnamefwrap r(   q/home/p21-0144/sympy/latex2sympy2solve-back-end/sympyEq/lib/python3.8/site-packages/mpmath/functions/functions.py__init__   s@    
zSpecialFunctions.__init__c                 C   s   t | || d S N)setattr)r$   r%   r&   r'   r(   r(   r)   r   =   s    zSpecialFunctions._wrap_specfunc                 C   s   t d S r+   NotImplementedErrorctxnzr(   r(   r)   _besseljD       zSpecialFunctions._besseljc                 C   s   t d S r+   r-   r0   r2   r(   r(   r)   _erfE   r4   zSpecialFunctions._erfc                 C   s   t d S r+   r-   r5   r(   r(   r)   _erfcF   r4   zSpecialFunctions._erfcc                 C   s   t d S r+   r-   )r0   r2   ar(   r(   r)   _gamma_upper_intG   r4   z!SpecialFunctions._gamma_upper_intc                 C   s   t d S r+   r-   r/   r(   r(   r)   _expint_intH   r4   zSpecialFunctions._expint_intc                 C   s   t d S r+   r-   r0   sr(   r(   r)   _zetaI   r4   zSpecialFunctions._zetac                 C   s   t d S r+   r-   )r0   r<   r8   r1   derivativesreflectr(   r(   r)   _zetasum_fastJ   r4   zSpecialFunctions._zetasum_fastc                 C   s   t d S r+   r-   r5   r(   r(   r)   _eiK   r4   zSpecialFunctions._eic                 C   s   t d S r+   r-   r5   r(   r(   r)   _e1L   r4   zSpecialFunctions._e1c                 C   s   t d S r+   r-   r5   r(   r(   r)   _ciM   r4   zSpecialFunctions._cic                 C   s   t d S r+   r-   r5   r(   r(   r)   _siN   r4   zSpecialFunctions._sic                 C   s   t d S r+   r-   r;   r(   r(   r)   _altzetaO   r4   zSpecialFunctions._altzetaN)__name__
__module____qualname____doc__r   ZTHETA_Q_LIMr*   classmethodr   r3   r6   r7   r9   r:   r=   r@   rA   rB   rC   rD   rE   r(   r(   r(   r)   r      s$   +
r   c                 C   s   | dft j| j< | S )NTr   r   rF   r&   r(   r(   r)   defun_wrappedQ   s    rM   c                 C   s   | dft j| j< | S )NFrK   rL   r(   r(   r)   defunU   s    rN   c                 C   s   t t| j|  | S r+   )r,   r   rF   rL   r(   r(   r)   defun_staticY   s    rO   c                 C   s   | j | | S r+   )onetanr5   r(   r(   r)   cot]   s    rR   c                 C   s   | j | | S r+   )rP   cosr5   r(   r(   r)   sec`   s    rT   c                 C   s   | j | | S r+   )rP   sinr5   r(   r(   r)   cscc   s    rV   c                 C   s   | j | | S r+   )rP   tanhr5   r(   r(   r)   cothf   s    rX   c                 C   s   | j | | S r+   )rP   coshr5   r(   r(   r)   sechi   s    rZ   c                 C   s   | j | | S r+   )rP   sinhr5   r(   r(   r)   cschl   s    r\   c                 C   s"   |s| j d S | | j| S d S )N      ?)piatanrP   r5   r(   r(   r)   acoto   s    
r`   c                 C   s   |  | j| S r+   )acosrP   r5   r(   r(   r)   asecv   s    rb   c                 C   s   |  | j| S r+   )asinrP   r5   r(   r(   r)   acscy   s    rd   c                 C   s"   |s| j d S | | j| S d S )Ny              ?)r^   atanhrP   r5   r(   r(   r)   acoth|   s    
rf   c                 C   s   |  | j| S r+   )acoshrP   r5   r(   r(   r)   asech   s    rh   c                 C   s   |  | j| S r+   )asinhrP   r5   r(   r(   r)   acsch   s    rj   c                 C   sH   |  |}|r| |r|S | |r<|dkr4| jS | j S |t| S )Nr   )convertisnan_is_real_typerP   absr0   xr(   r(   r)   sign   s    

rq   r   c                 C   s2   |dkr|  |S | |}| |}| ||S Nr   )Zagm1rk   Z_agm)r0   r8   br(   r(   r)   agm   s
    


rt   c                 C   s,   |  |rd| S |s|d S | || S rr   )isinfrU   ro   r(   r(   r)   sinc   s
    
rv   c                 C   s2   |  |rd| S |s|d S | || j|  S rr   )ru   sinpir^   ro   r(   r(   r)   sincpi   s
    
rx   c                    sB   s
 j S   j k r,dd   S   fdddS )Nr]   r   c                      s   t  dgS N)iterexpr(   ro   r(   r)   <lambda>   r4   zexpm1.<locals>.<lambda>r   )zeromagprecsum_accuratelyro   r(   ro   r)   expm1   s
    r   c                 C   sH   |s
| j S | || j k r,|d|d   S | | jd|d| j dS )Nr]   r   r   r   )r~   r   r   logfaddro   r(   r(   r)   log1p   s
    r   c           
         s   | j }| j}  | }||}|dkr,|S |sJrF dkrJ| rJ|S  | }|}|  }	|||	 | j k r|	 |	 d d  S |  fdddS )Ni)r   rz   y              ?y             r   c                      s   t   dgS ry   )r{   r(   rp   yr(   r)   r}      r4   zpowm1.<locals>.<lambda>r   )r   rP   isintlnr   r   )
r0   rp   r   r   rP   wMx1ZmagyZlnxr(   r   r)   powm1   s    
r   c                 C   sx   t |}t |}||; }|s"| jS d| |kr6| j S d| |krH| jS d| d| kr`| j S | d| | | S )Nr   r   r   )intrP   jexpjpimpf)r0   kr1   r(   r(   r)   _rootof1   s    r   r   c                 C   s   t |}| |}|r|d@ rVd| |d krV| |sV| |dk rV| | | S | j}z,|  jd7  _| ||d| || }W 5 || _X |
 S | ||S )Nr   r   r   
   )r   rk   imrer   r   r   _nthroot)r0   rp   r1   r   r   vr(   r(   r)   r      s    
0r   Fc                    sn    j  j}zJ  jd7  _|r< fddtD }n fddtD }W 5 | _X dd |D S )Nr   c                    s&   g | ]}|d kr  |qS )r   r   .0r   r0   gcdr1   r(   r)   
<listcomp>   s      zunitroots.<locals>.<listcomp>c                    s   g | ]}  |qS r(   r   r   )r0   r1   r(   r)   r     s     c                 S   s   g | ]
}|
 qS r(   r(   )r   rp   r(   r(   r)   r     s     )_gcdr   range)r0   r1   	primitiver   r   r(   r   r)   	unitroots   s    r   c                 C   s*   |  |}| |}| |}| ||S r+   )rk   _re_imatan2)r0   rp   r   r   r(   r(   r)   r     s    


r   c                 C   s   t | |S r+   )rn   rk   ro   r(   r(   r)   fabs  s    r   c                 C   s   |  |}t|dr|jS |S )Nreal)rk   hasattrr   ro   r(   r(   r)   r     s    

r   c                 C   s    |  |}t|dr|jS | jS )Nimag)rk   r   r   r~   ro   r(   r(   r)   r     s    

r   c                 C   s2   |  |}z
| W S  tk
r,   | Y S X d S r+   )rk   r   AttributeErrorro   r(   r(   r)   r      s
    

r   c                 C   s   |  || |fS r+   )r   r   r5   r(   r(   r)   polar(  s    r   c                 C   s   || j | |  S r+   )mpccos_sin)r0   rphir(   r(   r)   rect,  s    r   Nc                 C   s8   |d kr|  |S | jd }| j ||d| j ||d S )N   r   )r   r   )r0   rp   rs   wpr(   r(   r)   r   0  s    

r   c                 C   s   |  |dS )Nr   )r   ro   r(   r(   r)   log107  s    r   c                 C   s   |  ||  | S r+   )rk   )r0   rp   r   r(   r(   r)   fmod;  s    r   c                 C   s
   || j  S r+   degreero   r(   r(   r)   degrees?  s    r   c                 C   s
   || j  S r+   r   ro   r(   r(   r)   radiansC  s    r   c                 C   sv   |s|s|S | j | S || jkrD|dkr,|S |d| | j | j  S || j krl| d| d | j | j  S | |S )Nr   r   r   )ninfinfr^   r   r   )r0   r2   r   r(   r(   r)   _lambertw_specialG  s    


r   c                 C   s  d}t | dr8t| j}| j}|r.d|dk  }t|}nt| }d}d}|sPd}t||} |dkrd|  k rzdk rn nd|  k rdk rn n|r|d	krd
d| d   S |dkrdd| d   S |dk rdd| d   S |dk rdd| d   S |dk r2|dkr"dd| d   S dd| d   S d}|sJ||krJ|} |dk rtdd | | d!   d"| |   S |d!k r| S d#d$|   S |s|dkrt|}t|}nt| }t|}n|dkrd}|s ||  k rdk r n n|} |dkrP|d%k rPd&|  k r,dk rPn n dd | | d!   d"| |   S |sd|  krndk rn nt| }|t|  S |dkr|s|dk rt| d' }nt| d( }t|}|| ||  ||d)  d)|d)    S )*Nr   r   rz   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)r2   r   Z	imag_signrp   r   r   L1L2r(   r(   r)   _lambertw_approx_hybridZ  sn    




6    


 
 
 
 
"0 "
r   c                    s    }d|  k r dk r>n nd|  k r<dk r>n n|dk rtd dk r|dks|d	kr| dks|dkr dk r  fd
d}  | }  j|7  _ d j d  }  j|8  _ d	 dd d d	d}|dkr&| } j}	t	t
d|D ]Ɖkr fddt	dD |< d d  d |d  d   d  | d  d  d   <  |  }
|	|
7 }	  |
| k r|	df  S d7 q:  j|d 7  _|	dfS |dks0|d	kr>t|dfS |dkrx|d	k rbd  dfS  } |}nz|d	krЈ sd   k rdk rn n   }| |  dfS  d j |  } |}|| ||  ||d  d|d    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   rz   c                      s     dgS ry   )r|   r(   r5   r(   r)   r}     r4   z"_lambertw_series.<locals>.<lambda>r   r   c                 3   s&   | ]}|  d  |   V  qdS )r   Nr(   )r   r   )lur(   r)   	<genexpr>  s     z#_lambertw_series.<locals>.<genexpr>r   TFg,6V׿y               @)r   rn   r   r   r   sqrter   r~   r   maxfsumr   r   r   r^   )r0   r2   r   tolZmagzdeltacancellationpr8   r<   termr   r   r(   )r0   r   r   r2   r)   _lambertw_series  sT    
8

$T


8
r   c                 C   s  |  |}t|}| |s(t| ||S | j}|  jd| |p@d 7  _| j}|d }t| |||\}}|s| d}tdD ]p}	| 	|}
||
 }|| }||||
 || | || |     }| || | || kr|} qq|}q|	dkr| 
d|  || _|
 S )Nr   r   r
   r   d   z1Lambert W iteration failed to converge for z = %s)rk   r   isnormalr   r   r   r   r   r   r|   warn)r0   r2   r   r   r   r   r   ZdoneZtwoiZewZwewZwewzZwnr(   r(   r)   lambertw  s0    



(
r   c                 C   s   |  |}|s(| |r|S t|dS | |sP| |sP| |sP| |rX|| S |dkrd|S |dkrx||d  S |dkr| |S t| ||d| | S )Nr   r   r   T)rk   rl   typeru   rx   _polyexpr|   )r0   r1   rp   r(   r(   r)   bell  s    

(   
r   c                    s     fdd} j |ddS )Nc                  3   s@   r  V  } d}| |  V  |d7 }|  | } qd S rr   )rx   )tr   r0   extrar1   rp   r(   r)   _terms  s    z_polyexp.<locals>._termsr   )
check_step)r   )r0   r1   rp   r   r   r(   r   r)   r     s    	r   c                 C   s   |  |s(|  |s(| |s(| |r0|| S |dkr@|| S |dkrR| |S |dkrh| || S |dkr| || |d  S t| ||S )Nr   r   r   )ru   rl   r   r|   r   )r0   r<   r2   r(   r(   r)   polyexp  s    (  
  r   c                 C   s   t |}|dk rtd| j}|dkr*|S |dkr:|| S |dkrJ|| S d}d}d}d}td|d D ]l}|| sh| || }	| || }
|
r||
|	 9 }qh|	dkr||9 }|d7 }qh|	dkrh||9 }|d7 }qh|r||kr|d9 }n||9 }|| }|S )Nr   zn cannot be negativer   r   rz   )r   
ValueErrorrP   r   moebiusr   )r0   r1   r2   r   Za_prodZb_prodZ	num_zerosZ	num_polesdr   rs   r(   r(   r)   
cyclotomic  s@    


r   c                 C   s  t |}|dk r| jS |d dkr@||d @ dkr:| j
 S | jS dD ]N}|| sD|| d }}|dkrt||\}}|r^| j  S q^| |  S qD| |r| |S |dkrtd}t |d|  d }|dk r| jS || |kr| |r| |S |d7 }qdS )	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]   N)r   r~   ln2divmodr   isprimer.   )r0   r1   r   qr   r   r(   r(   r)   mangoldt;  s6    



r   c                 C   s.   |  t|t|}|r t|S | |S d S r+   )
_stirling1r   r   r0   r1   r   Zexactr   r(   r(   r)   	stirling1w  s    r   c                 C   s.   |  t|t|}|r t|S | |S d S r+   )
_stirling2r   r   r   r(   r(   r)   	stirling2  s    r   )r   )r   )F)N)r   )r   )F)F)F)6libmp.backendr   objectr   rM   rN   rO   rR   rT   rV   rX   rZ   r\   r`   rb   rd   rf   rh   rj   rq   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)   <module>   s   N















	













?6

	
*
;