o
    lh:                     @   s  d dl mZ ddlmZ ddlmZmZmZ edOddZedPdd	Z	ed
d Z
edd Zg dZdd ZedQd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dRd!d"Zd#d$ Zd%d& Zd'd( Zd)d* Zed+d, ZedRd-d.ZedRd/d0Zed1d2 Zed3d4 ZedSd6d7ZedTd8d9Z d:d; Z!d<d= Z"ed gd fd>d?Z#edgd fd@dAZ$dBdC Z%dDdE Z&dFdG Z'dHdI Z(edUdKdLZ)edMdN Z*d5S )V    )print_function   )xrange   )defundefun_wrappeddefun_staticc           	         sd      dk rdS tdrj}ni  }_ dkr?dkr-j
 S |v r?| \}}|jkr?|
 S d fdd}j}zMdkr`d_j|djgd	d
|d td  _j|djgdd
}	  d   	 d  d   d|     }W |_n|_w  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)xxavactxmagn i/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/mpmath/functions/zeta.pyf   s   Fzstieltjes.<locals>.f2         )	maxdegree
         ?r   )convert
bad_domainhasattrr	   eulerprecquadinfintr   isint)	r   r   r   r	   r%   sr   origr   r   r   r   	stieltjes   s8   





Br,   c                 C   s  t |}|| jks|| jkr$|dk r!|| jkr|dkr| jS | jS | jS |dkrm| |rP| dd|  }| dd|  }| | j d | d||   S | |rW|S | | dd|  | | jd |  S |dkrd|d  | 	|d dd|   }d|d  | 	|d dd|   }| |r|dkrd| 
| j d||   S d||  S |dkr| d| 
| j d||   S | d||  S d S )Nr   r         ?y              ?             r         )r(   r'   ninfzero_imloggammar   r   isinf	polygammalogr   )r   t
derivativedr   br   r   r   siegeltheta,   s4   
"
,$$
"r;   c              	      sF   d j   d d d d j    }  fdd|S )Nr   r      c                    s     |  j  S N)r;   r   r7   r   r   r   r   <lambda>S       zgrampoint.<locals>.<lambda>)r   r   lambertwefindroot)r   r   gr   r?   r   	grampointN   s   0rF   c              
      sd  t |dd}|}|}|}j}z$t|d| kr=|d |k r=||}|r:|W S |W S W n	 t	yG   Y nw  jd7  _
|}dj|  |dkry| }|_|rv|S |
 S jdj|  dd	j|dd|dkrj| 	   }|_|r|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rI 	
fdd
}	|	d}j | | }|_|rF|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rfdd}
j|
||d dS d S )Nr8   r     r      r    r   r8   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   )rK   comb2rL   rM   rN   rO   z3r   r   rP      s   "   c                      s:   d d j  d   dd  d   j  gS )NrS   r   r   r   )r   rL   theta2theta3theta4r   r   rP      s   $c                      s>   dd   dj    d  d   	 gS )N   r   rT   rS   rW   r   )
rQ   comb3r   rL   rX   rM   rN   rO   rR   z4r   r   rP      s   (c                    s    j | ddS )NrS   rI   )siegelz)r   r   r   r   r@      s    zsiegelz.<locals>.<lambda>r   )r(   getr!   r   r2   r%   absrs_z_is_real_typeNotImplementedErrorexpjr;   zetar   sum_accuratelydiff)r   r7   kwargsr9   t1t2r%   r   e1rP   hr   )rK   rQ   r\   r   rL   rX   rY   rZ   rM   rN   rO   rR   r]   r   r^   V   s   















r^   )dgD,@g|c5@g9@gll>@gYw@@gjDB@gp`uD@g,ݩE@geȨ H@gPH@gN~3|J@gC 9L@g7kM@g1wjN@g?a3GP@gP@gM>bQ@gY`OLR@gR@gXGEIS@gXeS@giCT@gH&Q/U@gܩ7U@gK`z3V@gwG{W@gꞯW@grxW@g˻;I2X@gSWTY@gts7oY@g~x\Z@gEAZ@gK[@g|j[@gZ~\@gU-]@gB/]@gg W^@g'٘^@go_@gCY_@gڡ2`@g#-Xb`@ggv`@gS5`@gӝCa@g{wa@g:ia@g=a@gl@b@g'B/Kmb@g;upb@gHٵb@gլJ c@gc@gZUxc@gҍd3c@gu&d@g`d@gĸ/d@g2d@g1E#e@g L.=e@gOТN+e@gBV"e@g': f@gxLf@gKS}f@gcf@gg@goLc<)3g@gstUSgg@g.+Qg@g6p^ h@g"h@g%-!~hh@g@T#h@goj}h@g
x(i@g㸆Oi@gxۙi@g5\i@gk i@g늁r2j@gqߋvj@g'"j@g֍dj@ghlk@gѿ)bk@gyk@gWȭk@g=IX9 l@g `Lewl@gx|ml@g+P̪l@gl@gbnl@g]06m@gJ}Ɛm@c                 C   sH   dd l }|| }dd | D }t|d dksJ |td d < d S )Nr   c                 S   s   g | ]}t |qS r   )float).0r   r   r   r   
<listcomp>   rA   z$_load_zeta_zeros.<locals>.<listcomp>   )urlliburlopen	readlinesround_zeta_zeros)urlrs   r9   Lr   r   r   _load_zeta_zeros   s
   
rz   2http://www.dtc.umn.edu/~odlyzko/zeta_tables/zeros1c              	   C   s~   t |}|dk r| |  S |dkrtd|ttkr&|dkr&t| |ttkr0td| d| 	| j
t|d  S )Nr   zn must be nonzeroi zn too large for zetazerosr    r   )r(   zetazero	conjugate
ValueErrorlenrw   rz   re   mpcrD   r^   )r   r   rx   r   r   r   oldzetazero   s   r   c                 C   s   |dkr| j S t|dkr)| |}d| | | }t|t|| j k r)|S t|dk r?|  jt| t|d 7  _| j }}| 	|}d}t|t|| j krx|| | }|||| 
|d   7 }|d7 }t|t|| j ksV|S )Nr     r    g{Gz?r   r   )r1   rb   lisqrtepsr%   r(   r6   oner   	_zeta_int)r   r   r   r:   r*   r7   ukr   r   r   riemannr   s$   
 

r   c                 C   s"   t |}|dk r
dS t| |S )Nr   r   )r(   r   list_primes)r   r   r   r   r   primepi   s   r   c                 C   s   t |}|dk r| jjS |dk r| 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   )roundingr<   r9   )r(   _ivr1   mpfr   r   r   r   r   floorr   ceilr:   )r   r   miderrr   r:   r   r   r   primepi2   s   
,r   c                    s     rS  dkrtddkr jS dkr%  j jS  }| jkr3d 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 _ |  |  | }|s(d S |  _ |V  q)Nr   r   )r%   moebiusr   rg   )r+   r   r   r7   r   r*   wpr   r   rP     s   
zprimezeta.<locals>.terms)
isnanrer~   r'   r   r0   r   r%   r(   rh   )r   r*   rrP   r   r   r   	primezeta   s   



r   c                    s,  t dk rtddksdkrdkr S dkr0 dd d   S dkrbdkr<d S dkrDd S dkrTd d  d d S dkrbd  d  S  rk S  rrS tdkr fd	d
} |  S  fdd
} |S )Nr   z-Bernoulli polynomials only defined for n >= 0r   r    r   r   r[   g      ?c                  3   st     j } | V   j  }d}|kr8| d |  | | } |dkr&|d@ s.|  | V  |d7 }|ksd S d S r
   )r   	bernoulli)r7   r   r   r   r   rM   r   r   rP   6  s   
zbernpoly.<locals>.termsc                  3   sx      V   j} d}|kr:| d |  |  } | }|dkr(|d@ s0|   | V  |d7 }|ksd S d S r
   )r   r   )r7   r   mr   r   r   rP   B  s   )r(   r~   r   ldexpr4   r   rb   rh   )r   r   rM   rP   r   r   r   bernpoly!  s*   
 




r   c                    sL  t dk rtddkr*dkrd S dkr d S dkr*d  S  r3 S  r:S d }dkrWd d|d   | | d  S dkrpd d|d   | | d  S dkrd r{ jS dk s d   jd	 k r  	 S  fd
d} 
|| S )Nr   z)Euler polynomials only defined for n >= 0r   r   r    d   g.eT>?r-   c                  3   s     j } d} dd }	 | d }|dkr|d@ s)d|  | |  V  |d7 }|kr3d S |  | d  | } |d9 }q)Nr   r   r   r    )r   r   r   )r7   r   wr   r   r   r   rP   g  s   zeulerpoly.<locals>.terms)r(   r~   r4   r   r   r   r1   r   r%   	_eulernumrh   )r   r   rM   r   rP   r   r   r   	eulerpolyN  s.   

**$r   Fc                 C   sT   t |}|rt | |S |dk r| | |S |d r | jS | | |d|S )Nr   r   r    )r(   r   r   r1   r   r   )r   r   exactr   r   r   eulernumv  s   r   c                 C   sP   | j 
 }| j}d}|}	 |||  }||7 }t||k r	 |S ||9 }|d7 }q)Nr   )r   r1   rb   )r   r*   rM   tollr   zktermr   r   r   polylog_series  s   r   c                 C   s   |dk r|d S d| j  }||  | | | || ||  }| |r0|dk r0| |}| |dk sE| |dkrY| |dkrY||| ||d   | |d  8 }|S )Nr   y               @r   )r   facr   r   rd   r   r2   )r   r   rM   twopijr   r   r   r   polylog_continuation  s   
*
*(r   c                 C   s  | j 
 }|dkrc| j}| |}| j}d}	 || dkr7| || | | | }|r3t||k r3n||7 }||9 }|d7 }q|| ||d  | |d  | |d | | |   7 }nP|dk r| | | | |d   }| |}| j}	d}
	 | |
| d }|r||	 | |
|
| d   }t||k rn||8 }|	|9 }	|
d7 }
qnt	| 
|r|dk r| |}|S )Nr   r   )r   r1   r   r   rg   r   rb   harmonicr   r~   rd   r   )r   r   rM   r   r   logzlogmzr   r   logkzr   r:   r   r   r   polylog_unitcircle  sH   
F 

r   c           
      C   s   | j }| |}t|dk sG| j}d| }| | d| j |  }| ||| | |d|  ||  | |d|    d| j |  S d}d}	 | || | }	t|	| jk r]n||	7 }|d7 }||9 }|| }qL| d| | |d   | S )N   r   r   r    r   )r1   r   rb   r   r   gammarg   r   )
r   r*   rM   r   r   r   yr7   r   r   r   r   r   polylog_general  s&   
J r   c                 C   s   |  |}|  |}|dkr| |S |dkr| | S |dkr'|d|  S |dkr3| d|  S |dkr?|d| d  S t|dksP| |sVt|dk rVt| ||S t|dkrz| |rzd|d  t| |d|  t| t| 	|| S | |rt
| t| 	||S t| ||S )Nr   r   r         ?g?gffffff?)r!   rg   altzetar   rb   r)   r   r   r(   r   r   r   )r   r*   rM   r   r   r   polylog  s&   


"2
r   c                 C   s   |  |r|dk rt|d dkr|d S |r| |}n| |}| |r5| |r5| | ||S d| }d| ||| ||  S )Nr   r   r   r.   )r)   r(   expjpirf   rd   imr   r   r*   rM   r   r   r:   r   r   r   clsin     "
r   c                 C   s   |  |r|dk rt|d dkr|d S |r| |}n| |}| |r5| |r5| | ||S d| }d| ||| ||  S )Nr   r   r   r    )r)   r(   r   rf   rd   r   r   r   r   r   r   clcos  r   r   c                 K   s2   z
| j |fi |W S  ty   | | Y S w r=   )_altzetare   _altzeta_generic)r   r*   rj   r   r   r   r     s
   r   c                 C   s2   |dkr| j d|  S | dd|  | | S )Nr   r   r   )ln2powm1rg   )r   r*   r   r   r   r   
  s   r   Nc                 K   s  t |}|dkr |s |s z
| j|fi |W S  ty   Y nw | |}| j}|d}|d}|sB|sB| d| |d  S |dkr|dkrt| 	|}	t| 
|}
t|	d| krjd|
 |k rj|d	ksn|d
krz*z|rvtd | j||fi |W W || _S  ty   |rtd Y nw W || _n|| _w |dkr| jS t|}|| jkr| || jkr|dkr| jS | jS |d S | |rd| S | |d| j kr|dkr|s| j| d|  S | j|||fi |
 S )Nr   methodverboser    r   zeuler-maclaurinrG   r   rS   zriemann-siegelz4zeta: Attempting to use the Riemann-Siegel algorithmz0zeta: Could not use the Riemann-Siegel algorithmr   )r(   _zetare   r!   r%   ra   r   _convert_paramrb   r2   r   printrs_zetar'   r   r   r1   r   power_hurwitz)r   r*   r   r8   r   rj   r9   r%   r   r   r   abssr   r   r   rg     sZ   


$


 rg   c                 K   sP  | j }|d}zd}|  j |7  _ | |\}}| |dk rC|r&td zt| ||||W W || _ S  ty<   Y nw |rCtd |rItd 	 || | _ t| ||||d |\}	}
| |	| |	|
  }|rztd|	 td	|
 td
|d ||k r|	|
 W || _ S t	d| t
|d d| }||dd| kr| dqJ|| _ w )Nr   r   r   z#zeta: Attempting reflection formulazzeta: Reflection formula failedz)zeta: Using the Euler-Maclaurin algorithmr   zTerm 1:zTerm 2:zCancellation:bitsr   r   r   maxpreczzeta: too much cancellation)r%   ra   r   r   r   _hurwitz_reflectionre   _hurwitz_emr   maxminNoConvergence)r   r*   r   r9   rj   r%   r   	extraprecatypeT1T2cancellationr   r   r   r   F  sF   




r   c                    s  |dkrt |}| }|r't|}|dkr'd| ||d  S |dks1|dks1t d| d}d}	|  dkrW d8  | | 8 }|	d8 }	 dksB dkrs| | 7 } d7  |	d7 }	 dks^z|j\}
W n   |t|ksJ t|}
dY |
|	 7 }
d|
  krksJ  J  fddtdd D }|d dj	    9 }||7 }|S )Nr   r   QZc                 3   s:    | ]} d  d |    |f V  qdS )r   N)cospir   rp   r   r:   r   qr7   r   r   	<genexpr>  s    2z&_hurwitz_reflection.<locals>.<genexpr>r   )
re   r   isnpintr(   r   _mpq_fsumranger   r   )r   r*   r   r9   r   resnegsr   r   shiftprE   r   r   r   r   k  sL   

$r   c               
   C   s  |  |}| }d}|d }|}	d}
| |rt| |}|d }	 | ||| || d |gd d }|
|7 }
|| }| |}|| }|g}d| }d| }||  }|rj| |d || ||d   }nd|||   }|d| | 7 }dg}|}d}td|	d D ]}d| }|dkrdg}n|d |d g}|D ]R}t||d }||kr|	|d |  dg|d  }t
|D ]}d| | ||  ||< qt
d|d D ]}||  ||d  ||d   7  < q|}||9 }q| ||| | | |  }||7 }| ||k r|
d| | f  S ||d |d  9 }q|r4td||d| |d	| ||d }}| |dk rI|	|	d 7 }	q#)
Nr   r   r   r    r   r   z
Sum range:zterm magnitude	tolerance)r!   r)   r(   r   _zetasumr   gammaincr   r   appendr   fdotr   r   r   r   ) r   r*   r   r9   r%   r   r   M1M2Nlsums1r   M2alogM2alogM2adlogslogrrM2aM2astailsumUr   factr   j2updsr   DUnir7   r   r   r   r     sf   

&

"&8
 r   c                    s  t |dj k r z
| |||W S  ty   Y nw j|dd|dgk}t|dk}|sl|sJ fddt|d D gg fS |rl|d  fddt|d D }d	 | gg fS t	|}	|sxt
|	d }fd
d|D }
|rfdd|D }ng }t|d D ]q} | }| }|rj||  }|r| }|r||	 }|
d  || 7  < |r|d  || 7  < qj}|D ]|
  || 7  < |r|  || 7  < ||9 }qq|
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 r=   r   r   )r   r   r   r   r     s    z_zetasum.<locals>.<genexpr>c                 3   s.    | ]}  |   |   V  qd S r=   )r   r   r   r   r9   r   r   r   r     s   , r   c                       g | ]} j qS r   r1   rp   r9   r_   r   r   rq         z_zetasum.<locals>.<listcomp>c                    r  r   r  r  r_   r   r   rq     r	  )rb   r   r%   _zetasum_fastre   fnegr   r   r   r   r   conjr   r   )r   r*   r   r   derivativesreflecthave_derivativeshave_one_derivativer   maxdxsysr   r   xtermytermlogwr7   r   r  r   r     s`   
(&
r   c              	   C   sN  |  |}t|}t|}|dkrtd| j}z|  jd7  _|dkrPd}|D ]}|rE|dkrEd}| j
 }	|  jd|d  9  _||	7 }q(|rP| j
 W || _S | j}
td|d D ];}|||  r|dkr|
|||  | 	|||fd| 	|||f| 
|   7 }
qZ|
|||  | 	|||f 7 }
qZ|
||  }
W || _|

 S || _w )Nr   zarbitrary order derivativesr   r   TF)r!   r   r(   re   r%   r   r'   r1   r   rg   r6   )r   r*   chir8   r   r9   r%   	have_poler   rn   rM   r   r   r   r   	dirichlet  sB   

 r  c                    s   j } fdd}j }}j}d}	||kr6||7 }|	d7 }	|	||	}t|}||ksd}
|dru}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)regularized)r   r`   r   r   gammr*   r   r   r@   7  s   & z&secondzeta_main_term.<locals>.<lambda>r   r   errorr    r   r   r/   )r   r1   r'   r   zetazero_memoizedrb   ra   r   r   r   r6   r   r   )r   r*   r   rj   r   r   totsumr   mgr   r   sgr   r  r   secondzeta_main_term5  s,   


6r"  c                    s   j } fdd}j }}j}d}	||ks|	dk r=||7 }|	d7 }	||	}|dkr1j}nt|}||ks|	dk s|drD|}
|
 |
|	fS )Nc                    sr    dd  d| d   d  d|  d   |  |  dd  j  S )Nr    r   r-   r   r   )r   r6   mangoldtr   r   r   r`   r   r   r*   r   r   r@   K  s   ( z'secondzeta_prime_term.<locals>.<lambda>r   	   r   r  )r   r1   r'   rb   ra   )r   r*   r   rj   r   r   r  r   r   r   r   r   r$  r   secondzeta_prime_termI  s    

r&  c                    s    r#dkr#tt}|d@ s#d| d  S j} fdd}j}|d}j}d}	||krR||7 }|	d7 }	||	}t|}||ks> d  | 	d  }
|
S )Nr   r   z-0.25r   c                    s"   d  |  | d   |   S )Nr-   r    )r   r`   r$  r   r   r@   c  s   " z%secondzeta_exp_term.<locals>.<lambda>r    )
r)   r   r(   rv   r   r   r1   r'   rb   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|}||kr||	ks]||7 }dd d  j	
djd     d d	   }|||  }d
}|dr||kr||	ks||krΈdt
t|| d }||	krdt
t||	 d }t|jd } j|8  _|
 |fS )Nr    r   rS   c                    sB    | dd  |   d|   |  d |   S )Nr   rS   r    r   )r   r   r   r   r`   r$  r   r   r@   v  s
    z*secondzeta_singular_term.<locals>.<lambda>r      r   r   r   r  r         ?)r   r   r   r   r%   r   r1   r'   rb   r$   r6   ra   r   r(   r   )r   r*   r   rj   factorr   r   r   r  mg1r   r   mg2polestr   r   r$  r   secondzeta_singular_termp  sD   .
.	:
""
r/  Q?c                 K   s  |  |}|  |}| j}| |rP| |dkrPt|d |d k r&| jS tt| |}|d@ r6| jS d| d  | d| j	| dd d| d   S | j
}zwt| ||}t| |d	}|  j
|d 7  _
t| ||d
d
d\}	}
}t| ||d
d
d\}}}t| ||d
d\}}t| ||}|
| | }|	| | | }|drtd|	 td|d td| td|d td| td| W || _
n|| _
w |drt| 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   r<   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   rb   r'   r(   rv   fractionr   r%   r'  r   r   r"  r&  r/  ra   r   )r   r*   r   rj   r   r   r%   t3r   rk   r1gtrl   r2ptt4r4r   r7   r   r   r   r   
secondzeta  sJ   
\
$





 
r:  c           	         s  |dkr	   S |dkr  S  dkr|| S  dk rc r/tdtd  }j}j}t	|D ]}|| |   7 }||9 }qE|
| |  | 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 rJ   )sinatanexpm1r>   r   r   rE   rn   r   r*   r   r   r@   }  s     zlerchphi.<locals>.<lambda>)rg   r   r   r   r~   r(   r   r1   r   r   lerchphir   r   r   r&   r'   r   chop)	r   rM   r*   r   r   r   zpowr   r   r   r>  r   r?    s2   Q



<
,
r?  )r   )r   )r{   )F)r   r   N)r   r   )r0  )+
__future__r   libmp.backendr   	functionsr   r   r   r,   r;   rF   r^   rw   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   r   r   r   r   r  r"  r&  r'  r/  r:  r?  r   r   r   r   <module>   s|    %!

M



#
,
'$


5$)A=!$ 