U
    ZÊ¹j:Ž  ã                d   @   sŠ  d dl mZ ddlmZ ddlmZmZmZ ed²dd„ƒZed³dd	„ƒZ	ed
d„ ƒZ
edd„ ƒZddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqgdZdrds„ Zed´dudv„ƒZedwdx„ ƒZedydz„ ƒZed{d|„ ƒZed}d~„ ƒZedd€„ ƒZed�d‚„ ƒZedµd„d…„ƒZd†d‡„ Zdˆd‰„ ZdŠd‹„ ZdŒd�„ ZedŽd�„ ƒZed¶d�d‘„ƒZed·d’d“„ƒZed”d•„ ƒZed–d—„ ƒZed¸d™dš„ƒZed¹d›dœ„ƒZ d�dž„ Z!dŸd „ Z"ed gdƒfd¡d¢„ƒZ#edgd fd£d¤„ƒZ$d¥d¦„ Z%d§d¨„ Z&d©dª„ Z'd«d¬„ Z(edºd®d¯„ƒZ)ed°d±„ ƒZ*d˜S )»é    )Úprint_functioné   )Úxrangeé   )ÚdefunÚdefun_wrappedÚdefun_staticc           	         sb  ˆ  ˆ¡‰ˆ  ˆ ¡‰ ˆdk r&ˆ d¡S tˆdƒr8ˆj}n
i  }ˆ_ˆ dkr~ˆdkrZˆj
 S ˆ|kr~|ˆ \}}|ˆjkr~|
 S d‰‡ ‡‡‡fdd„}ˆj}z”ˆdkrÀdˆ_ˆj|dˆjgd	d
�‰|d tˆd ƒ ˆ_ˆj|dˆjgdd
�}ˆ 	ˆ ¡ˆ dˆ   ˆ 	ˆ ¡ˆd  ˆd   d| ˆ  ˆ  }W 5 |ˆ_X ˆ dk�r\ˆ 
ˆ¡�r\ˆj|f|ˆ< |
 S )Nr   z&Stieltjes constants defined for n >= 0Ústieltjes_cacher   c                    s\   | ˆ  }|ˆj  ˆ ˆ ˆj |   ¡ˆ  d|d   ˆ dˆj |  ¡d  }ˆ |¡ˆ S ©Nr   r   )ÚjÚlnÚexpÚpiÚ_re)ÚxZxaÚv©ÚaÚctxÚmagÚn© úT/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mpmath/functions/zeta.pyÚf   s    Fzstieltjes.<locals>.fé2   é   é   )Z	maxdegreeé
   ç      à?r   )ÚconvertZ
bad_domainÚhasattrr	   ÚeulerÚprecÚquadÚinfÚintr   Úisint)	r   r   r   r	   r"   Úsr   Úorigr   r   r   r   Ú	stieltjes   s8    





Dr)   c                 C   s®  t |ƒ}|| jks|| jkrH|dk rB|| jkr<|dkr<| jS | jS | jS |dkrÚ|  |¡r |  dd|  ¡}|  dd|  ¡}|  | j¡ d | d||   S |  |¡r®|S |  |  dd|  ¡¡|  | j¡d |  S |dk�rªd|d  |  	|d dd|  ¡ }d|d  |  	|d dd|  ¡ }|  |¡�rl|dk�r^d|  
| j¡ d||   S d||  S n>|dk�r˜|  d|  
| j¡ d||   ¡S |  d||  ¡S d S )Nr   r   ç      Ð?y              à?ù       €      à¿r   ç      à¿)r%   r$   ÚninfÚzeroÚ_imZloggammar   r   ÚisinfZ	polygammaÚlogr   )r   ÚtÚ
derivativeÚdr   Úbr   r   r   Úsiegeltheta,   s2    
"
,
$$

"r6   c              	      sF   dˆ j  ˆ  dˆ  dˆ d dˆ j  ¡ ¡ }ˆ  ‡ ‡fdd„|¡S )Nr   r   é   c                    s   ˆ   | ¡ˆ jˆ  S ©N)r6   r   ©r2   ©r   r   r   r   Ú<lambda>S   ó    zgrampoint.<locals>.<lambda>)r   r   ZlambertwÚeÚfindroot)r   r   Úgr   r:   r   Ú	grampointN   s    0r@   c              
      sn  t | dd¡ƒ}ˆ |¡}ˆ |¡}ˆ |¡}ˆj}zHt|ƒd| krz|d |k rzˆ ||¡}ˆ |¡rtˆ |¡W S |W S W n t	k
r�   Y nX ˆ jd7  _ˆ 
ˆ |¡¡}ˆ dˆj|  ¡‰|dkrô|ˆ }|ˆ_ˆ |¡rîˆ |¡S |
 S ˆjdˆj|  dd�‰	ˆj|dd�‰|dk�r\ˆj| ˆ	ˆˆ   }|ˆ_ˆ |¡�rVˆ |¡S |
 S ˆjdˆj|  dd�‰
ˆj|dd�‰ˆd ˆjˆ  ‰ |dk�rê‡ ‡‡‡	‡
fd	d
„}	ˆ |	d¡}| | }|ˆ_ˆ |¡�räˆ |¡S |
 S ˆ jd7  _ˆjdˆj|  dd�‰ˆj|dd�‰ˆd dˆj ˆ ˆ  ˆ ‰|dk�rœ‡ ‡‡‡‡	‡
‡fdd
„}	ˆ |	d¡}ˆj | | }|ˆ_ˆ |¡�r–ˆ |¡S |
 S ˆjdˆj|  dd�‰ˆj|dd�‰‡‡‡‡‡fdd
„}	ˆ |	d¡‰|dk�r@‡‡‡‡‡‡‡	‡
‡‡f
dd
„}	ˆ |	d¡}|| }|ˆ_ˆ |¡�r:ˆ |¡S |
 S |dk�rj‡fdd„}
ˆj|
||d d�S d S )Nr3   r   éô  r   é   r   r   ©r3   c                      s   dˆ ˆ ˆˆˆ  gS ©Nr   r   r   )Úcomb1Útheta1ÚzÚz1Úz2r   r   Útermsz   s    zsiegelz.<locals>.termsr   r   c                      s"   dˆ ˆ dˆ ˆ  ˆˆˆ  gS )Nr   r   r   )rE   Úcomb2rF   rG   rH   rI   Úz3r   r   rJ   ‡   s    é   c                      s:   ˆd dˆ j  ˆd  ˆ dˆd  dˆ ˆ ˆ j ˆ gS )NrM   éúÿÿÿr   éýÿÿÿéüÿÿÿ©r   r   )r   rF   Útheta2Útheta3Útheta4r   r   rJ   ‘   s    $
 ÿc                      s>   dˆd  ˆ dˆj  ˆ ˆ dˆ ˆ dˆ ˆ  ˆ	ˆˆ gS )Né   r   rN   rM   rQ   r   )
rK   Úcomb3r   rF   rR   rG   rH   rI   rL   Úz4r   r   rJ   –   s
    (
  ÿc                    s   ˆ j | dd�S )NrM   rC   )Úsiegelz)r   ©r   r   r   r;       r<   zsiegelz.<locals>.<lambda>©r   )r%   Úgetr   r   r/   r"   ÚabsZrs_zÚ_is_real_typeÚNotImplementedErrorÚexpjr6   Úzetar   Úsum_accuratelyÚdiff)r   r2   Úkwargsr4   Út1Út2r"   r   Úe1rJ   Úhr   )rE   rK   rV   r   rF   rR   rS   rT   rG   rH   rI   rL   rW   r   rX   V   sˆ    
















rX   gŒ­�±úD,@g|¸Èc¤5@g‚÷�Ç9@glŠ®Äl>@gY°w@@gjDËâËB@gp`§•˜uD@g,¥Š‰Ý©E@ge¸¸È¨ H@gÜËPñãH@gæNƒ~3|J@gáC ¥9L@g7”ðk¬M@gï1ý·wjN@g?aóë3GP@g�ûž�ÅP@gMÎá>øbQ@gY`³OLR@g€§íR@gXàGEIS@gÊXe�—ÕS@giµ®CºT@gHõ&Q/U@gÜ©³7ÛU@gùK`zÈ3V@gÂwG{W@g‡¢êž¯©W@gr x¸÷W@gË»;I2µX@gSñ¾«WTY@gts7oîY@g´~Úx•\Z@gEA�†ÊÊZ@gKÐéãÁ[@g|jú÷[@gäZÝ~”\@gàU-î�]@gBí¼/œ²]@ggÁÆ °W^@gü'åÙ˜¼^@gè›·o_@g¾CYá_@gÚ¡«¾„2`@g#œ-XÎb`@gg’ví¯`@g®ñS5Ø`@gñåÓ�¶Ca@g™{�wa@gÎ:iõ£a@gÀñ¨=”ãa@g±l@b@g'B/K‡mb@gŸ;up¶Áb@gHýÙµ›Ýb@gÕ¬JÊ c@gŸ¤óóœƒc@gZUàx³c@gÒ�d3Ûc@gu…þ&d@g¼ªá’û`d@gÇÄ¸«/±d@g¸2«îæåd@g–1E#e@g× Lé.=e@gOÐ¢N+­e@g“ÆBV"Øe@gÄ'Ò: f@g£åx¹Lf@g�¦KÖS}f@g‡�c Æf@gÿ£ûg@goLc<)3g@gstUSgg@gô.õ+Q­g@g6×p^Ú h@g£™Î�"h@g%¢-!~hh@g@T¥#œh@go··j}Àh@g
¡Ùx(i@g®ã¸†ËOi@gxÛ™Ê†i@g5Í\¡¬i@gkµ£ ýi@gëŠ�Är2j@gÀqß‹vj@gÈ'"«j@gÖ�d�Ñj@g¹hÜlk@g‰Ñ¿)bk@g”y�à–k@gÇWÈ­k@g=I™X9 l@g `Lewl@göõ¶x|ml@g+PýÌªl@g…Š»‹èl@gü¢bn—ÿl@gßöõ]06m@gâJ}Æ�m@c                 C   sH   dd l }| | ¡}dd„ | ¡ D ƒ}t|d ƒdks8t‚|td d …< d S )Nr   c                 S   s   g | ]}t |ƒ‘qS r   )Úfloat)Ú.0r   r   r   r   Ú
<listcomp>¾   s     z$_load_zeta_zeros.<locals>.<listcomp>é   )ÚurllibÚurlopenÚ	readlinesÚroundÚAssertionErrorÚ_zeta_zeros)Úurlrl   r4   ÚLr   r   r   Ú_load_zeta_zeros»   s
    
rt   ú2http://www.dtc.umn.edu/~odlyzko/zeta_tables/zeros1c              	   C   s~   t |ƒ}|dk r |  | ¡ ¡ S |dkr0tdƒ‚|ttƒkrL|dkrLt|ƒ |ttƒkr`tdƒ‚|  d|  	| j
t|d  ¡¡S )Nr   zn must be nonzeroi † zn too large for zetazerosr   r   )r%   ZzetazeroÚ	conjugateÚ
ValueErrorÚlenrq   rt   r^   Úmpcr>   rX   )r   r   rr   r   r   r   ÚoldzetazeroÃ   s    rz   c                 C   sà   |dkr| j S t|ƒdkrR|  |¡}d|  |  |¡¡ }t|ƒt|ƒ| j k rR|S t|ƒdk r~|  jt|  t|ƒd¡ ƒ7  _| j }}|  	|¡}d}t|ƒt|ƒ| j krÜ|| | }||||  
|d ¡  7 }|d7 }q–|S )Nr   éè  r   g{®Gáz„?r   r   )r.   r\   ÚliÚsqrtÚepsr"   r%   r1   Úoner   Z	_zeta_int)r   r   r   r5   r'   r2   ÚuÚkr   r   r   ÚriemannrÐ   s"    
 


r‚   c                 C   s"   t |ƒ}|dk rdS t|  |¡ƒS )Nr   r   )r%   rx   Zlist_primes)r   r   r   r   r   Úprimepiç   s    rƒ   c                 C   s°   t |ƒ}|dk r| jjS |dk r2| j |  |¡¡S |  |¡}| j|dd�| j|dd� d | jdd� }| j	| j |¡| j
dd�}| j| j |¡| jdd�}| j ||g¡S )Nr   ia
  r€   )Úroundingr7   r4   )r%   Z_ivr.   Úmpfrƒ   r|   r}   r   r   Úfloorr   Úceilr5   )r   r   ÚmidÚerrr   r5   r   r   r   Úprimepi2ï   s    
,rŠ   c                    sŽ   ˆ   ˆ¡rˆS ˆ  ˆ¡dkr$tdƒ‚ˆdkr2ˆ jS ˆdkrJˆ  ˆ jˆ j¡S ˆ  ˆ¡}|ˆ jkrfdˆ S ˆ jt|ƒ ‰‡ ‡‡fdd„}ˆ  	|¡S )Nr   z.prime zeta function defined only for re(s) > 0r   r   c                  3   s^   ˆ j } d}|d7 }ˆ  |¡}|s"q
ˆˆ _ |ˆ  ˆ  |ˆ ¡¡ | }|sLd S | ˆ _ |V  q
d S )Nr   r   )r"   Zmoebiusr   r`   )r(   r�   r€   r2   ©r   r'   Zwpr   r   rJ     s    
zprimezeta.<locals>.terms)
ÚisnanÚrerw   r$   ry   r-   r   r"   r%   ra   )r   r'   ÚrrJ   r   r‹   r   Ú	primezetaý   s    


r�   c                    s2  t ˆƒ‰ˆdk rtdƒ‚ˆdks0ˆdkr:ˆdkr:ˆ  ˆ¡S ˆdkr`ˆ  ddˆ ¡d ˆ  ˆ¡ S ˆdkrÄˆdkrxˆd S ˆdkrˆˆd S ˆdkr¨dˆ ˆd  d d S ˆdkrÄˆˆˆd  d  S ˆ  ˆ¡rÖˆˆ S ˆ  ˆ¡räˆS tˆƒdk�r‡ ‡‡fd	d
„}ˆ  |¡ˆˆ  S ‡ ‡‡fdd
„}ˆ  |¡S d S )Nr   z-Bernoulli polynomials only defined for n >= 0r   r   r   r   rU   g      ø?c                  3   sh   ˆ j } | V  ˆ j ˆ }d}|ˆkrd| ˆd |  | | } |dkrJ|d@ sZ| ˆ  |¡ V  |d7 }qd S r
   )r   Ú	bernoulli)r2   rŽ   r�   ©r   r   rG   r   r   rJ   6  s    
zbernpoly.<locals>.termsc                  3   sl   ˆ   ˆ¡V  ˆ j} d}|ˆkrh| ˆd |  | ˆ } ˆ| }|dkrN|d@ s^| ˆ   |¡ V  |d7 }qd S r
   )r�   r   )r2   r�   Úmr‘   r   r   rJ   B  s    )r%   rw   r�   Úldexpr0   rŒ   r\   ra   )r   r   rG   rJ   r   r‘   r   Úbernpoly!  s2    
    



r”   c                    sR  t ˆƒ‰ˆdk rtdƒ‚ˆdkrTˆdkr0ˆd S ˆdkr@ˆd S ˆdkrTˆˆd  S ˆ  ˆ¡rfˆˆ S ˆ  ˆ¡rtˆS ˆd }ˆdkr®dˆ  d|¡d  ˆ  |¡ | ˆd  S ˆdkràdˆ  d|¡d  ˆ  |¡ | ˆd  S ˆdk�r4ˆd røˆ jS ˆdk �s ˆˆ  dˆ ¡ ˆ jd	 k �r4ˆ  ˆ  	ˆ¡ˆ ¡S ‡ ‡‡fd
d„}ˆ  
|¡| S )Nr   z)Euler polynomials only defined for n >= 0r   r   r   éþÿÿÿéd   g.eÏT>úÝ?r*   c                  3   s†   ˆ j } d}ˆ  dˆd ¡}ˆ| d }|dkr6|d@ sNd| ˆ  |¡ |  V  |d7 }|ˆkr`q‚| ˆ ˆ| d  | } |d9 }qd S )Nr   r   r   r   )r   r“   r�   )r2   r�   Úwr   r‘   r   r   rJ   g  s    zeulerpoly.<locals>.terms)r%   rw   r0   rŒ   r“   r�   r.   r   r"   Ú	_eulernumra   )r   r   rG   r’   rJ   r   r‘   r   Ú	eulerpolyN  s4       

**
(r™   Fc                 C   sT   t |ƒ}|rt |  |¡ƒS |dk r2|  |  |¡¡S |d r@| jS |  |  |d¡|¡S )Nr–   r   r   )r%   r˜   r…   r.   r“   r™   )r   r   Úexactr   r   r   Úeulernumv  s    r›   c                 C   sN   | j 
 }| j}d}|}|||  }||7 }t|ƒ|k r8qJ||9 }|d7 }q|S )Nr   )r~   r.   r\   )r   r'   rG   ÚtolÚlr�   ZzkÚtermr   r   r   Úpolylog_series‚  s    
rŸ   c                 C   s¶   |dk r|d S d| j  }||  |  |¡ |  ||  |¡| ¡ }|  |¡r`|dk r`|  |¡}|  |¡dk sŠ|  |¡dkr²|  |¡dkr²|||  |¡|d   |  |d ¡ 8 }|S )Nr   y               @r   )r   Úfacr”   r   r]   r   r/   )r   r   rG   Ztwopijr   r   r   r   Úpolylog_continuation�  s    
*
*(r¡   c                 C   s�  | j 
 }|dkrÄ| j}|  |¡}| j}d}|| dkrl|  || ¡| |  |¡ }|rdt|ƒ|k rdq~||7 }||9 }|d7 }q*||  |¡|d  |  |d ¡ |  |d ¡|  |  |¡ ¡  7 }n¨|dk �rh|  | ¡|  |¡ |d   }|  |¡}| j}	d}
|  |
| d ¡}|�rR||	 |  |
¡|
| d   }t|ƒ|k �rJ�ql||8 }|	|9 }	|
d7 }
�qnt	‚|  
|¡�rŒ|dk �rŒ|  |¡}|S )Nr   r   )r~   r.   r   r   r`   r    r\   Zharmonicr�   rw   r]   r   )r   r   rG   rœ   r�   ZlogzZlogmzr’   rž   Zlogkzr�   r5   r   r   r   Úpolylog_unitcircle›  s>    

F
 

r¢   c           
      C   sú   | j }|  |¡}t|ƒdk sŽ| j}d| }|  | ¡d| j |  }|  |¡|| |  |d| ¡ ||  |  |d| ¡   d| j |  S d}d}|  || ¡| }	t|	ƒ| jk r¸qÚ||	7 }|d7 }||9 }|| }q–|  d| ¡| |d   | S )Né   r   r   r   r   )r.   r   r\   r   r   Úgammar`   r~   )
r   r'   rG   r   r€   r   Úyr2   r�   rž   r   r   r   Úpolylog_general¿  s"    
J
r¦   c                 C   s"  |   |¡}|   |¡}|dkr&|  |¡S |dkr:|  |¡ S |dkrN|d|  S |dkrf|  d| ¡ S |dkr~|d| d  S t|ƒdks |  |¡s¬t|ƒdk r¬t| ||ƒS t|ƒdkrô|  |¡rôd|d  t| |d| ƒ t| t|  	|¡ƒ|ƒ S |  |¡�rt
| t|  	|¡ƒ|ƒS t| ||ƒS )Nr   éÿÿÿÿr   r   ç      è?gÍÌÌÌÌÌì?gffffffö?)r   r`   Úaltzetar   r\   r&   rŸ   r¡   r%   r�   r¢   r¦   )r   r'   rG   r   r   r   ÚpolylogÓ  s&    


"2rª   c                 C   sŽ   |   |¡r*|dk r*t|ƒd dkr*|d S |r:|  |¡}n
|  |¡}|  |¡rj|  |¡rj|  |  ||¡¡S d| }d|  ||¡|  ||¡  S )Nr   r   r   r+   )r&   r%   Úexpjpir_   r]   Úimrª   ©r   r'   rG   r   r   r5   r   r   r   Úclsiné  s    "
r®   c                 C   sŽ   |   |¡r*|dk r*t|ƒd dkr*|d S |r:|  |¡}n
|  |¡}|  |¡rj|  |¡rj|  |  ||¡¡S d| }d|  ||¡|  ||¡  S )Nr   r   r   r   )r&   r%   r«   r_   r]   r�   rª   r­   r   r   r   Úclcosö  s    "
r¯   c                 K   s4   z| j |f|ŽW S  tk
r.   |  |¡ Y S X d S r8   )Z_altzetar^   Ú_altzeta_generic)r   r'   rc   r   r   r   r©     s    r©   c                 C   s2   |dkr| j d|  S |  dd| ¡ |  |¡ S )Nr   r   r   )Zln2Zpowm1r`   )r   r'   r   r   r   r°   
  s    r°   Nc                 K   sì  t |ƒ}|dkr>|s>|s>z| j|f|ŽW S  tk
r<   Y nX |  |¡}| j}| d¡}| d¡}|s‚|s‚|  d¡|  |¡d  S |dk�r6|dk�r6t|  	|¡ƒ}	t|  
|¡ƒ}
t|	ƒd| krÖd|
 |k rÖ|d	ksà|d
k�r6zLz"|rðtdƒ | j||f|ŽW W ¢*S  tk
�r(   |�r$tdƒ Y nX W 5 || _X |dk�rF| jS t|ƒ}|| jk�rŠ|  |¡| jk�r‚|dk�r|| jS | jS |d S |  |¡�ržd| S |  |¡d| j k�rØ|dk�rØ|�sØ| j|  d| ¡ S | j|||f|Ž
 S )Nr   ÚmethodÚverboser   r   zeuler-maclaurinrA   r   rM   zriemann-siegelz4zeta: Attempting to use the Riemann-Siegel algorithmz0zeta: Could not use the Riemann-Siegel algorithmr   )r%   Z_zetar^   r   r"   r[   r…   Ú_convert_paramr\   r/   r   ÚprintZrs_zetar$   r�   r   r.   rŒ   ÚpowerÚ_hurwitz)r   r'   r   r3   r±   rc   r4   r"   r²   r¬   r�   Zabssr   r   r   r`     sT    



$ÿ


&r`   c                 K   sT  | j }| d¡}�z4d}|  j |7  _ |  |¡\}}|  |¡dk r†|rNtdƒ zt| ||||ƒW W ¢äS  tk
rx   Y nX |r†tdƒ |r’tdƒ || | _ t| ||||d |ƒ\}	}
|  |	¡|  |	|
 ¡ }|ròtd|	ƒ td|
ƒ td	|d
ƒ ||k �r|	|
 W ¢BS t	d| t
|d d| ƒƒ}|| dd| ¡kr’|  d¡‚q’W 5 || _ X d S )Nr²   r   r   z#zeta: Attempting reflection formulazzeta: Reflection formula failedz)zeta: Using the Euler-Maclaurin algorithmzTerm 1:zTerm 2:zCancellation:Úbitsr   r£   r–   Zmaxpreczzeta: too much cancellation)r"   r[   r³   r�   r´   Ú_hurwitz_reflectionr^   Ú_hurwitz_emr   ÚmaxÚminZNoConvergence)r   r'   r   r4   rc   r"   r²   Ú	extraprecÚatypeZT1ZT2Zcancellationr   r   r   r¶   F  s<    




r¶   c                    sˆ  |dkrt ‚ˆ |¡}| }ˆ |¡rNt|ƒ}|dkrNˆ d| |¡|d  S |dksb|dksbt ‚d| ‰d}d}	|‰ ˆ ˆ ¡dkr¢ˆ d8 ‰ |ˆ | 8 }|	d8 }	qvˆ ˆ ¡dkrÎ|ˆ | 7 }ˆ d7 ‰ |	d7 }	q¢z|j\}
‰W n(   |t|ƒksôt‚t|ƒ}
d‰Y nX |
|	ˆ 7 }
d|
  k�r*ˆk�s0n t‚ˆ ‡ ‡‡‡fdd„tdˆd ƒD ƒ¡}|dˆ 	ˆ¡ dˆj
 ˆ ˆ  9 }||7 }|S )Nr   r   ÚQÚZc                 3   s8   | ]0}ˆ  ˆd  d | ˆ   ¡ˆ ˆ|ˆf¡ V  qdS )r   N)Zcospir¶   ©ri   r�   ©r5   r   Úqr2   r   r   Ú	<genexpr>Ž  s   ÿz&_hurwitz_reflection.<locals>.<genexpr>r   )r^   r�   Úisnpintr%   r”   Z_mpq_rp   ÚfsumÚranger¤   r   )r   r'   r   r4   r½   ÚresÚnegsr   r   ÚshiftÚpr?   r   rÁ   r   r¸   k  sH    




ÿ$r¸   c               
   C   s¢  |   |¡}| }d}|d }|}	d}
|  |¡r<t|  |¡ƒ}|d }|  ||| || d |g¡d d }|
|7 }
|| }|  |¡}|| }|g}d| }d| }||  }|rÒ|  |d || ¡||d   }nd|||   }|d| | 7 }dg}|}d}td|	d ƒD �]B}d| }|dk�r.dg}n|d |d g}|D ]¬}t||d ƒ}||k�rp| 	|d | ¡ dg|d  }t
|ƒD ]}d| | ||  ||< �q†t
d|d ƒD ]*}||  ||d  ||d   7  < �q´|}||9 }�qB|  ||¡| |  |¡ |  }||7 }|  |¡|k �r<|
d| | f  S ||d |d  9 }�q|�rttd||d|  |¡d	|ƒ ||d  }}|  |¡dk rD|	|	d 7 }	qDd S )
Nr   r   r   r   r   r§   z
Sum range:zterm magnitudeZ	tolerance)r   r&   r%   r   Ú_zetasumr   ÚgammaincrÆ   r»   Úappendr   Zfdotr�   r   r´   r�   ) r   r'   r   r4   r"   r²   rœ   ZM1ZM2ÚNZlsumÚs1r�   ZM2aZlogM2aZlogM2adZlogsZlogrZrM2aZM2asZtailsumÚUrŽ   Zfactr   Zj2Zupdsr’   ÚDZUnÚir2   r   r   r   r¹   ”  sf    

&

"

  ( r¹   c                    s(  t ˆ |¡ƒdˆj k rBzˆ |ˆ |||¡W S  tk
r@   Y nX ˆj|dd�‰|dgk}t|ƒdk}|sÚ|s–ˆ ‡ ‡fdd„t|d ƒD ƒ¡gg fS |rÚ|d ‰ˆ ‡ ‡‡‡fdd„t|d ƒD ƒ¡}d	ˆ | gg fS t	|ƒ}	|sòt
|	d ƒ}‡fd
d„|D ƒ}
|�r‡fdd„|D ƒ}ng }t|d ƒD ]ð}ˆ | }|ˆ }|�r\ˆ ˆj||  ¡}|�röˆ |¡ }|�r¬||	 }|
d  || 7  < |�rô|d  || 7  < nHˆj}|D ]<‰|
ˆ  || 7  < |�rè|ˆ  || 7  < ||9 }�q¶n&|
d  |7  < |�r.|d  |7  < �q.|
|fS )a§  
    Returns [xd0,xd1,...,xdr], [yd0,yd1,...ydr] where

    xdk = D^k     ( 1/a^s     +  1/(a+1)^s      +  ...  +  1/(a+n)^s     )
    ydk = D^k conj( 1/a^(1-s) +  1/(a+1)^(1-s)  +  ...  +  1/(a+n)^(1-s) )

    D^k = kth derivative with respect to s, k ranges over the given list of
    derivatives (which should consist of either a single element
    or a range 0,1,...r). If reflect=False, the ydks are not computed.
    r   T©rš   r   r   c                 3   s   | ]}ˆ | ˆ V  qd S r8   r   rÀ   )r   rÈ   r   r   rÃ   í  s     z_zetasum.<locals>.<genexpr>c                 3   s,   | ]$}ˆ  ˆ | ¡ˆ ˆ | ˆ  V  qd S r8   )r   rÀ   ©r   r   r4   rÈ   r   r   rÃ   ð  s     r§   c                    s   g | ]
}ˆ j ‘qS r   ©r.   ©ri   r4   rY   r   r   rj   õ  s     z_zetasum.<locals>.<listcomp>c                    s   g | ]
}ˆ j ‘qS r   rÕ   rÖ   rY   r   r   rj   ÷  s     )r\   r�   r"   Z_zetasum_fastr^   Zfnegrx   rÅ   r   rº   rÆ   Zconjr   r   )r   r'   r   r   ZderivativesZreflectZhave_derivativesZhave_one_derivativer   ZmaxdZxsZysr�   r—   ZxtermZytermZlogwr2   r   rÔ   r   rË   Õ  sX    
(&rË   c              	   C   sJ  |   |¡}t|ƒ}t|ƒ}|dkr*tdƒ‚| j}�z|  jd7  _|dkržd}|D ]:}|rR|dkrRd}| j
 }	|  jd|d  9  _||	7 }qR|rž| j
 W ¢ S | j}
td|d ƒD ]x}|||  r²|dk�r
|
|||  |  	|||fd¡|  	|||f¡|  
|¡   7 }
q²|
|||  |  	|||f¡ 7 }
q²|
||  }
W 5 || _X |

 S )Nr   zarbitrary order derivativesr   r   TF)r   rx   r%   r^   r"   r~   r$   r.   rÆ   r`   r1   )r   r'   Úchir3   rÂ   r4   r"   Z	have_poler   rg   rG   rÊ   r   r   r   Ú	dirichlet  s:    


ÿ
"rØ   c                    sð   ˆj }‡ ‡‡‡fdd„}ˆj }}ˆj}d}	||krf||7 }|	d7 }	ˆ ˆ |	¡¡‰||	ƒ}t|ƒ}q,d}
| d¡räˆ ˆ¡}dˆjd  t	d|ƒ ˆ |d   ˆ 
ˆdˆj  ¡ ˆ d	ˆ ˆd  ¡ tˆ ˆd ¡ƒ }
t|
ƒ}
|
 |
|	fS )
Nc                    s&   ˆj dˆ ˆ ˆd  dd�ˆˆ   S )Nr   r   T)Zregularized)rÌ   rZ   ©r   r   Zgammr'   r   r   r;   7  r<   z&secondzeta_main_term.<locals>.<lambda>r   r   Úerrorr   r§   r   r,   )r~   r.   r$   r¬   Zzetazero_memoizedr\   r[   r�   r   rº   r1   rÌ   r¤   )r   r'   r   rc   rœ   r   Útotsumrž   Úmgr   r‰   Zsgr   rÙ   r   Úsecondzeta_main_term5  s*    



6ÿÿrÝ   c                    s†   ˆj }‡ ‡‡fdd„}ˆj }}ˆj}d}	||ks:|	dk rl||7 }|	d7 }	||	ƒ}|dkrbˆj}q*t|ƒ}q*| d¡rz|}
|
 |
|	fS )Nc                    sr   ˆ  ddˆ  dˆ | ¡d  ˆ d  ¡dˆ | ¡ ˆd   ˆ | ¡ ˆ | ¡ dˆ dˆ ¡ ˆ ˆj¡  S )Nr   r   r*   r   r§   )rÌ   r1   Zmangoldtr}   r¤   r   rZ   ©r   r   r'   r   r   r;   K  s   (ÿÿÿþz'secondzeta_prime_term.<locals>.<lambda>r   é	   r   rÚ   )r~   r.   r$   r\   r[   )r   r'   r   rc   rœ   r   rÛ   rž   rÜ   r   r‰   r   rÞ   r   Úsecondzeta_prime_termI  s    


rà   c                    sÀ   ˆ  ˆ¡rFˆ ˆ¡dkrFttˆ ˆ¡ƒƒ}|d@ sFˆ d¡| d  S ˆj}‡ ‡‡fdd„}ˆj}|dƒ}ˆj}d}	||krž||7 }|	d7 }	||	ƒ}t|ƒ}qtˆ dˆ  | ˆ 	dˆ ¡ }
|
S )Nr   r   z-0.25r   c                    s"   dˆ  |  | dˆ  ˆ  | ¡  S )Nr*   r   )r    rZ   rÞ   r   r   r;   c  r<   z%secondzeta_exp_term.<locals>.<lambda>r   )
r&   r�   r%   ro   r…   r~   r.   r$   r\   r¤   )r   r'   r   r’   rœ   r   rÛ   rž   rÜ   r   r   r   rÞ   r   Úsecondzeta_exp_term]  s"    
rá   c                    sê  ˆ dˆd   dˆ  ˆj¡ ˆ dˆ ¡  }ˆ |¡}ˆ j|7  _ˆ dˆd   dˆ  ˆj¡ ˆ dˆ ¡  }ˆj}‡ ‡‡fdd„}ˆj}ˆj}	d}
||
ƒ}t|ƒ}||krø||	krø||7 }|
d7 }
||
ƒ}||7 }|
d7 }
||
ƒ}|}	t|ƒ}qª||7 }dˆd d  ˆj	ˆ 
dˆjd  ˆ  ¡ ˆd d	   }|||  }d
}| d¡�rÒ||k�rj||	k�sÂ||k�r–ˆ d¡tˆ 
t|| ƒd¡ƒ }||	k�rÂˆ d¡tˆ 
t||	 ƒd¡ƒ }t|ˆjd ƒ}ˆ j|8  _|
 |fS )Nr   r   rM   c                    sB   ˆ  | d¡dˆ ˆ ¡ |   ˆ d|  ¡ ˆ|  d ˆ | ¡  S )Nr¨   rM   r   r   )r”   r}   r¤   r    rZ   rÞ   r   r   r;   v  s   ÿÿz*secondzeta_singular_term.<locals>.<lambda>r•   é   r   r§   r   rÚ   r   ç      ð?)r}   r   r¤   r   r"   r~   r.   r$   r\   r!   r1   r[   r…   r%   rº   )r   r'   r   rc   Úfactorr¼   rœ   r   rÛ   Zmg1r   rž   Zmg2ZpoleÚstr‰   r   rÞ   r   Úsecondzeta_singular_termp  sB    .
.
:
"
"ræ   ç¸…ëQ¸Ž?c                 K   sê  |   |¡}|   |¡}| j}|  |¡r |  |¡dkr t|d ƒ|d k rL| jS tt|  |¡ƒƒ}|d@ rl| jS d| d  |  d| j	| dd� d| d  ¡ S | j
}zêt| ||ƒ}t|  |¡d	ƒ}|  j
|d 7  _
t| ||d
d
d�\}	}
}t| ||d
d
d�\}}}t| ||d
d�\}}t| ||ƒ}|
| | }|	| | | }| d¡�rŽtd|	ƒ td|dƒ td|ƒ td|dƒ td|ƒ td|ƒ W 5 || _
X | d¡�rät|  t|ƒ¡d	ƒ}t|d|  | jd d|  ƒ}|
 |fS |
 S )a§  
    Evaluates the secondary zeta function `Z(s)`, defined for
    `\mathrm{Re}(s)>1` by

    .. math ::

        Z(s) = \sum_{n=1}^{\infty} \frac{1}{\tau_n^s}

    where `\frac12+i\tau_n` runs through the zeros of `\zeta(s)` with
    imaginary part positive.

    `Z(s)` extends to a meromorphic function on `\mathbb{C}`  with a
    double pole at `s=1` and  simple poles at the points `-2n` for
    `n=0`,  1, 2, ...

    **Examples**

        >>> from mpmath import *
        >>> mp.pretty = True; mp.dps = 15
        >>> secondzeta(2)
        0.023104993115419
        >>> xi = lambda s: 0.5*s*(s-1)*pi**(-0.5*s)*gamma(0.5*s)*zeta(s)
        >>> Xi = lambda t: xi(0.5+t*j)
        >>> chop(-0.5*diff(Xi,0,n=2)/Xi(0))
        0.023104993115419

    We may ask for an approximate error value::

        >>> secondzeta(0.5+100j, error=True)
        ((-0.216272011276718 - 0.844952708937228j), 2.22044604925031e-16)

    The function has poles at the negative odd integers,
    and dyadic rational values at the negative even integers::

        >>> mp.dps = 30
        >>> secondzeta(-8)
        -0.67236328125
        >>> secondzeta(-7)
        +inf

    **Implementation notes**

    The function is computed as sum of four terms `Z(s)=A(s)-P(s)+E(s)-S(s)`
    respectively main, prime, exponential and singular terms.
    The main term `A(s)` is computed from the zeros of zeta.
    The prime term depends on the von Mangoldt function.
    The singular term is responsible for the poles of the function.

    The four terms depends on a small parameter `a`. We may change the
    value of `a`. Theoretically this has no effect on the sum of the four
    terms, but in practice may be important.

    A smaller value of the parameter `a` makes `A(s)` depend on
    a smaller number of zeros of zeta, but `P(s)`  uses more values of
    von Mangoldt function.

    We may also add a verbose option to obtain data about the
    values of the four terms.

        >>> mp.dps = 10
        >>> secondzeta(0.5 + 40j, error=True, verbose=True)
        main term = (-30190318549.138656312556 - 13964804384.624622876523j)
            computed using 19 zeros of zeta
        prime term = (132717176.89212754625045 + 188980555.17563978290601j)
            computed using 9 values of the von Mangoldt function
        exponential term = (542447428666.07179812536 + 362434922978.80192435203j)
        singular term = (512124392939.98154322355 + 348281138038.65531023921j)
        ((0.059471043 + 0.3463514534j), 1.455191523e-11)

        >>> secondzeta(0.5 + 40j, a=0.04, error=True, verbose=True)
        main term = (-151962888.19606243907725 - 217930683.90210294051982j)
            computed using 9 zeros of zeta
        prime term = (2476659342.3038722372461 + 28711581821.921627163136j)
            computed using 37 values of the von Mangoldt function
        exponential term = (178506047114.7838188264 + 819674143244.45677330576j)
        singular term = (175877424884.22441310708 + 790744630738.28669174871j)
        ((0.059471043 + 0.3463514534j), 1.455191523e-11)

    Notice the great cancellation between the four terms. Changing `a`, the
    four terms are very different numbers but the cancellation gives
    the good value of Z(s).

    **References**

    A. Voros, Zeta functions for the Riemann zeros, Ann. Institute Fourier,
    53, (2003) 665--699.

    A. Voros, Zeta functions over Zeros of Zeta Functions, Lecture Notes
    of the Unione Matematica Italiana, Springer, 2009.
    r   r{   r§   r   r7   TrÓ   r   r   ÚTrue)rÚ   r²   )rÚ   r²   zmain term =z    computed usingzzeros of zetazprime term =z#values of the von Mangoldt functionzexponential term =zsingular term =rÚ   rã   )r   r~   r&   r�   r\   r$   r%   ro   Zfractionr›   r"   rá   rº   r   rÝ   rà   ræ   r[   r´   )r   r'   r   rc   rœ   r’   r"   Zt3r¼   rd   Úr1Úgtre   Úr2ÚptZt4Zr4r‰   r2   r—   r   r   r   Ú
secondzeta”  sH    \

$ÿ


 
rí   c           	         s�  |dkrˆ ˆ  S |dkr&ˆ  ˆˆ ¡S ˆ dkr>ˆ ˆ|¡| S ˆ ˆ ¡dk rÆˆ ˆ ¡r^tdƒ‚tˆ dˆ ˆ ¡ ¡ƒ}ˆj}ˆj}t	|ƒD ] }||ˆ | ˆ  7 }||9 }qŠ|ˆ 
|ˆˆ | ¡ | S ˆ |¡‰ddˆ ˆ   ˆ dˆ ˆ  ˆ ¡ˆ ˆd   |ˆ    }ˆd ‰dˆj ‰‡ ‡‡‡‡‡fdd„}|dˆ |dˆjg¡ 7 }ˆ |¡�sŒˆ ˆ¡�sŒˆ ˆ ¡�sŒˆ |¡dk �rŒˆ |¡}|S )až
  
    Gives the Lerch transcendent, defined for `|z| < 1` and
    `\Re{a} > 0` by

    .. math ::

        \Phi(z,s,a) = \sum_{k=0}^{\infty} \frac{z^k}{(a+k)^s}

    and generally by the recurrence `\Phi(z,s,a) = z \Phi(z,s,a+1) + a^{-s}`
    along with the integral representation valid for `\Re{a} > 0`

    .. math ::

        \Phi(z,s,a) = \frac{1}{2 a^s} +
                \int_0^{\infty} \frac{z^t}{(a+t)^s} dt -
                2 \int_0^{\infty} \frac{\sin(t \log z - s
                    \operatorname{arctan}(t/a)}{(a^2 + t^2)^{s/2}
                    (e^{2 \pi t}-1)} dt.

    The Lerch transcendent generalizes the Hurwitz zeta function :func:`zeta`
    (`z = 1`) and the polylogarithm :func:`polylog` (`a = 1`).

    **Examples**

    Several evaluations in terms of simpler functions::

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> lerchphi(-1,2,0.5); 4*catalan
        3.663862376708876060218414
        3.663862376708876060218414
        >>> diff(lerchphi, (-1,-2,1), (0,1,0)); 7*zeta(3)/(4*pi**2)
        0.2131391994087528954617607
        0.2131391994087528954617607
        >>> lerchphi(-4,1,1); log(5)/4
        0.4023594781085250936501898
        0.4023594781085250936501898
        >>> lerchphi(-3+2j,1,0.5); 2*atanh(sqrt(-3+2j))/sqrt(-3+2j)
        (1.142423447120257137774002 + 0.2118232380980201350495795j)
        (1.142423447120257137774002 + 0.2118232380980201350495795j)

    Evaluation works for complex arguments and `|z| \ge 1`::

        >>> lerchphi(1+2j, 3-j, 4+2j)
        (0.002025009957009908600539469 + 0.003327897536813558807438089j)
        >>> lerchphi(-2,2,-2.5)
        -12.28676272353094275265944
        >>> lerchphi(10,10,10)
        (-4.462130727102185701817349e-11 - 1.575172198981096218823481e-12j)
        >>> lerchphi(10,10,-10.5)
        (112658784011940.5605789002 - 498113185.5756221777743631j)

    Some degenerate cases::

        >>> lerchphi(0,1,2)
        0.5
        >>> lerchphi(0,1,-2)
        -0.5

    Reduction to simpler functions::

        >>> lerchphi(1, 4.25+1j, 1)
        (1.044674457556746668033975 - 0.04674508654012658932271226j)
        >>> zeta(4.25+1j)
        (1.044674457556746668033975 - 0.04674508654012658932271226j)
        >>> lerchphi(1 - 0.5**10, 4.25+1j, 1)
        (1.044629338021507546737197 - 0.04667768813963388181708101j)
        >>> lerchphi(3, 4, 1)
        (1.249503297023366545192592 - 0.2314252413375664776474462j)
        >>> polylog(4, 3) / 3
        (1.249503297023366545192592 - 0.2314252413375664776474462j)
        >>> lerchphi(3, 4, 1 - 0.5**10)
        (1.253978063946663945672674 - 0.2316736622836535468765376j)

    **References**

    1. [DLMF]_ section 25.14

    r   r   z#Lerch transcendent complex infinityr   c                    sB   ˆ  ˆˆ | ˆ  ¡ | ˆ  ¡ˆ d | d  ˆ ˆ ˆ|  ¡  S rD   )ÚsinÚatanÚexpm1r9   ©r   r   r?   rg   rŽ   r'   r   r   r;   }  s    ÿzlerchphi.<locals>.<lambda>)r`   rª   r�   rÄ   rw   r%   r‡   r.   r   r   Úlerchphir   rÌ   r   r#   r$   r¬   Zchop)	r   rG   r'   r   r’   r   Zzpowr   r   r   rñ   r   rò     s2    Q



<
4
rò   )r   )r   )ru   )F)F)F)r   r   N)r   r   )rç   )+Ú
__future__r   Zlibmp.backendr   Z	functionsr   r   r   r)   r6   r@   rX   rq   rt   rz   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>   sB  %!

N                                                                                ì



#
,
'$


5$)A=!$ 