U
    ZÊ¹j´F  ã                   @   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ÚzetaZfibZfac)ZphaseÚ	conjugateZnthrootZ	polygammaZhurwitzZ	fibonacciÚ	factorial)Ú	__class__Údefined_functionsÚ_wrap_specfunZ_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ÚmemoizeZzetazeroZzetazero_memoized)ÚselfÚclsÚnameÚfÚwrap© r   úY/var/www/html/bwave/python/venv/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$   ©r'   r)   r   r   r    Ú_erfE   r+   zSpecialFunctions._erfc                 C   s   t ‚d S r"   r$   r,   r   r   r    Ú_erfcF   r+   zSpecialFunctions._erfcc                 C   s   t ‚d S r"   r$   )r'   r)   Úar   r   r    Ú_gamma_upper_intG   r+   z!SpecialFunctions._gamma_upper_intc                 C   s   t ‚d S r"   r$   r&   r   r   r    Ú_expint_intH   r+   zSpecialFunctions._expint_intc                 C   s   t ‚d S r"   r$   ©r'   Úsr   r   r    Ú_zetaI   r+   zSpecialFunctions._zetac                 C   s   t ‚d S r"   r$   )r'   r3   r/   r(   ZderivativesZreflectr   r   r    Ú_zetasum_fastJ   r+   zSpecialFunctions._zetasum_fastc                 C   s   t ‚d S r"   r$   r,   r   r   r    Ú_eiK   r+   zSpecialFunctions._eic                 C   s   t ‚d S r"   r$   r,   r   r   r    Ú_e1L   r+   zSpecialFunctions._e1c                 C   s   t ‚d S r"   r$   r,   r   r   r    Ú_ciM   r+   zSpecialFunctions._cic                 C   s   t ‚d S r"   r$   r,   r   r   r    Ú_siN   r+   zSpecialFunctions._sic                 C   s   t ‚d S r"   r$   r2   r   r   r    Ú_altzetaO   r+   zSpecialFunctions._altzetaN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ZTHETA_Q_LIMr!   Úclassmethodr   r*   r-   r.   r0   r1   r4   r5   r6   r7   r8   r9   r:   r   r   r   r    r      s$   +
r   c                 C   s   | dft j| j< | S )NT©r   r   r;   ©r   r   r   r    Údefun_wrappedQ   s    rB   c                 C   s   | dft j| j< | S )NFr@   rA   r   r   r    ÚdefunU   s    rC   c                 C   s   t t| j| ƒ | S r"   )r#   r   r;   rA   r   r   r    Údefun_staticY   s    rD   c                 C   s   | j |  |¡ S r"   )ÚoneÚtanr,   r   r   r    Úcot]   s    rG   c                 C   s   | j |  |¡ S r"   )rE   Úcosr,   r   r   r    Úsec`   s    rI   c                 C   s   | j |  |¡ S r"   )rE   Úsinr,   r   r   r    Úcscc   s    rK   c                 C   s   | j |  |¡ S r"   )rE   Útanhr,   r   r   r    Úcothf   s    rM   c                 C   s   | j |  |¡ S r"   )rE   Úcoshr,   r   r   r    Úsechi   s    rO   c                 C   s   | j |  |¡ S r"   )rE   Úsinhr,   r   r   r    Úcschl   s    rQ   c                 C   s"   |s| j d S |  | j| ¡S d S )Nç      à?)ÚpiÚatanrE   r,   r   r   r    Úacoto   s    
rU   c                 C   s   |   | j| ¡S r"   )ÚacosrE   r,   r   r   r    Úasecv   s    rW   c                 C   s   |   | j| ¡S r"   )ÚasinrE   r,   r   r   r    Úacscy   s    rY   c                 C   s"   |s| j d S |  | j| ¡S d S )Ny              à?)rS   ÚatanhrE   r,   r   r   r    Úacoth|   s    
r[   c                 C   s   |   | j| ¡S r"   )ÚacoshrE   r,   r   r   r    Úasech„   s    r]   c                 C   s   |   | j| ¡S r"   )ÚasinhrE   r,   r   r   r    Úacsch‡   s    r_   c                 C   sH   |   |¡}|r|  |¡r|S |  |¡r<|dkr4| jS | j S |t|ƒ S )Nr   )ÚconvertÚisnanZ_is_real_typerE   Úabs©r'   Úxr   r   r    ÚsignŠ   s    

re   r   c                 C   s2   |dkr|   |¡S |  |¡}|  |¡}|  ||¡S ©Nr   )Zagm1r`   Z_agm)r'   r/   Úbr   r   r    Úagm–   s
    


rh   c                 C   s,   |   |¡rd| S |s|d S |  |¡| S rf   )ÚisinfrJ   rc   r   r   r    Úsincž   s
    
rj   c                 C   s2   |   |¡rd| S |s|d S |  |¡| j|  S rf   )ri   ZsinpirS   rc   r   r   r    Úsincpi¦   s
    
rk   c                    sB   ˆs
ˆ j S ˆ  ˆ¡ˆ j k r,ˆdˆd   S ˆ  ‡ ‡fdd„d¡S )NrR   r   c                      s   t ˆ  ˆ¡dgƒS ©Néÿÿÿÿ)ÚiterÚexpr   rc   r   r    Ú<lambda>·   r+   zexpm1.<locals>.<lambda>r   )ÚzeroÚmagÚprecÚsum_accuratelyrc   r   rc   r    Úexpm1¯   s
    ru   c                 C   sH   |s
| j S |  |¡| j k r,|d|d   S |  | jd|d| j d�¡S )NrR   r   r   ©rs   )rq   rr   rs   ÚlogZfaddrc   r   r   r    Úlog1p¹   s
    rx   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   rm   y              ð?y       €      ð¿r   c                      s   t ˆ ˆ dgƒS rl   )rn   r   ©rd   Úyr   r    rp   Õ   r+   zpowm1.<locals>.<lambda>r   )rr   rE   ZisintÚlnrs   rt   )
r'   rd   rz   rr   rE   ÚwÚMÚx1ZmagyZlnxr   ry   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   )ÚintrE   ÚjZexpjpiÚmpf)r'   Úkr(   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€   r`   ÚimÚrer   rs   r„   Z_nthroot)r'   rd   r(   rƒ   rs   Ú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ƒ   ©r'   Úgcdr(   r   r    Ú
<listcomp>ÿ   s      zunitroots.<locals>.<listcomp>c                    s   g | ]}ˆ   |ˆ¡‘qS r   r‰   rŠ   )r'   r(   r   r    rŽ     s     c                 S   s   g | ]
}|
 ‘qS r   r   )r‹   rd   r   r   r    rŽ     s     )Ú_gcdrs   Úrange)r'   r(   Z	primitivers   rˆ   r   rŒ   r    Ú	unitrootsø   s    r‘   c                 C   s*   |   |¡}|  |¡}|  |¡}|  ||¡S r"   )r`   Ú_reÚ_imÚatan2)r'   rd   r‡   r†   r   r   r    r     s    


r   c                 C   s   t |  |¡ƒS r"   )rb   r`   rc   r   r   r    Úfabs  s    r•   c                 C   s   |   |¡}t|dƒr|jS |S )NÚreal)r`   Úhasattrr–   rc   r   r   r    r‡     s    

r‡   c                 C   s    |   |¡}t|dƒr|jS | jS )NÚimag)r`   r—   r˜   rq   rc   r   r   r    r†     s    

r†   c                 C   s2   |   |¡}z
| ¡ W S  tk
r,   | Y S X d S r"   )r`   r   ÚAttributeErrorrc   r   r   r    r      s
    

r   c                 C   s   |   |¡|  |¡fS r"   )r•   r   r,   r   r   r    Úpolar(  s    rš   c                 C   s   || j |  |¡Ž  S r"   )ZmpcZcos_sin)r'   ÚrÚphir   r   r    Úrect,  s    r�   Nc                 C   s8   |d kr|   |¡S | jd }| j ||d�| j ||d� S )Né   rv   )r{   rs   )r'   rd   rg   Úwpr   r   r    rw   0  s    

rw   c                 C   s   |   |d¡S )Nr…   )rw   rc   r   r   r    Úlog107  s    r    c                 C   s   |   |¡|   |¡ S r"   )r`   )r'   rd   rz   r   r   r    Úfmod;  s    r¡   c                 C   s
   || j  S r"   ©Zdegreerc   r   r   r    Údegrees?  s    r£   c                 C   s
   || j  S r"   r¢   rc   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   )ZninfÚinfrS   r�   r{   )r'   r)   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�rÌd|  k rzdk �rŽn �nd|  k r–dk �rŽn nô|rþ|d	kr¶d
d| d   S |dkrÎdd| d   S |dk rædd| d   S |dk rþd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�r´t |¡}t |¡}nt | ¡}t |¡}�n|dk�rÐd}|�s ||  k �rødk �r n n|} |dk�rP|d%k �rPd&|  k �r,dk �rPn n dd | | d!   d"| |   S |�sŽd|  k�rndk �rŽn nt | ¡}|t | ¡ S |dk�r¸|�s¸|dk �r¸t | ¡d' }nt | ¡d( }t |¡}|| ||  ||d)  d)|d)    S )*Nr   r˜   rm   g        g      Àg      @g      ð¿g      @ç      ð?yÕxé&1ì?¤p=
×£ä?yh‘í|?5¾?ƒÀÊ¡EÆ¿y      è?      @g      Ð?y)\�Âõ(à?é&1¬Ê?y      Ø?L7‰A`åÀ¿y      è?      à?yÕxé&1ì?¤p=
×£ä¿yh‘í|?5¾?ƒÀÊ¡EÆ?y      è?      Àg      Ð¿y)\�Âõ(à?é&1¬Ê¿y      Ø?L7‰A`åÀ?y      è?      à¿g      à¿y'1¬ZÔ¿q=
×£põ?yçû©ñÒMæ¿`åÐ"Ûùâ¿r   y'1¬ZÔ¿q=
×£põ¿yçû©ñÒMæ¿`åÐ"Ûùâ?g2ï,6V‹×¿gš™™™™™É¿gµÿ¶õ4§@rR   g}tp¹¸þü?gš™™™™™É?g333333Ó?gš™™™™™¹?g333333ã¿y        -DTû!	@y        -DTû!@r   )r—   Úfloatr–   r˜   ÚcomplexÚmathrw   Úcmath)r)   rƒ   Z	imag_signrd   rz   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Ðˆ  ˆ¡�sÐdˆ  ˆ¡  k �r¬dk �rÐn 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.
    iöÿÿÿi„  iüÿÿiè  r   gï,6V‹×?gš™™™™™©?r   rm   c                      s   ˆˆ   d¡gS rl   )ro   r   r,   r   r    rp   ¥  r+   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               @)rr   rb   r“   rt   rs   ÚsqrtÚer‚   rq   r   ÚmaxÚfsumr®   r{   r’   rS   )r'   r)   rƒ   ÚtolZmagzÚdeltaZcancellationÚpr/   r3   Útermr¬   r­   r   )r'   r¯   r°   r)   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î|} qôq‚|}q‚|	dk�r|  
d| ¡ || _|
 S )Nrž   r   r
   r   éd   z1Lambert W iteration failed to converge for z = %s)r`   r€   Zisnormalr¦   rs   rr   rº   r‚   r   ro   Úwarn)r'   r)   rƒ   rs   rŸ   r¶   r|   ÚdoneÚtwoÚiÚ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)r`   ra   Útyperi   rk   Ú_polyexpro   )r'   r(   rd   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 rf   )rk   )Útrƒ   ©r'   Úextrar(   rd   r   r    Ú_termsû  s    z_polyexp.<locals>._termsr   )Z
check_step)rt   )r'   r(   rd   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   )ri   ra   ru   ro   rÃ   )r'   r3   r)   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   rm   )r€   Ú
ValueErrorrE   r�   Zmoebiusr   )r'   r(   r)   r¸   Za_prodZb_prodZ	num_zerosZ	num_polesÚdr|   rg   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r„t||ƒ\}}|r^| j  S q^|  |¡  S qD|  |¡r¨|  |¡S |dkr´t‚d}t |d|  d ƒ}|dk rÚ| jS || |krú|  |¡rú|  |¡S |d7 }q¸d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       ©7§3M“e'r§   rR   N)r€   rq   Zln2Údivmodr{   Zisprimer%   )r'   r(   r¸   Úqr›   rƒ   r   r   r    Úmangoldt;  s6    



rÖ   c                 C   s.   |   t|ƒt|ƒ¡}|r t|ƒS |  |¡S d S r"   )Z
_stirling1r€   r‚   ©r'   r(   rƒ   Úexactrˆ   r   r   r    Ú	stirling1w  s    rÙ   c                 C   s.   |   t|ƒt|ƒ¡}|r t|ƒS |  |¡S d S r"   )Z
_stirling2r€   r‚   r×   r   r   r    Ú	stirling2  s    rÚ   )r   )r   )F)N)r   )r   )F)F)F)6Zlibmp.backendr   Úobjectr   rB   rC   rD   rG   rI   rK   rM   rO   rQ   rU   rW   rY   r[   r]   r_   re   rh   rj   rk   ru   rx   r   r„   r   r‘   r   r•   r‡   r†   r   rš   r�   rw   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

	
*
;