
    "`%                        d dl mZ ddlmZ ddlmZmZmZ ed+d       Zed,d       Z	ed        Z
ed	        Zg d
Zd Zed-d       Zed        Zed        Zed        Zed        Zed        Zed        Zed.d       Zd Zd Zd Zd Zed        Zed.d       Zed.d       Zed        Zed        Zed/d       Zed0d        Z d! Z!d" Z"ed gdfd#       Z#edgd fd$       Z$d% Z%d& Z&d' Z'd( Z(ed1d)       Z)ed*        Z*y)2    )print_function   )xrange   )defundefun_wrappeddefun_staticc                 "   	  j                         j                        dk  r j                  d      S t         d      r j                  }n	i x} _        dk(  r0dk(  r j                  S |v r|   \  }}| j
                  k\  r|S d	 	fd} j
                  }	 dkD  r'd _         j                  |d j                  gd	      	|d
z   t        dz        z    _         j                  |d j                  gd	      } j                        z  dz  z   j                        dz   z  dz   z  z
  d|z  z  	z  z   }| _        dk(  r" j                        r j
                  |f|<   |S # | _        w xY w)Nr   z&Stieltjes constants defined for n >= 0stieltjes_cacher   c                     | z  }|j                   z
  j                  j                   | z  z
        z  z  d|dz  z   z  j                  dj                  z  | z        dz
  z  }j	                  |      z  S Nr   r   )jlnexppi_re)xxavactxmagns      7/usr/lib/python3/dist-packages/mpmath/functions/zeta.pyfzstieltjes.<locals>.f   sw    qSXsvvaai(!++Qr1uW5swwqxz7J17LMwwqzC    2         )	maxdegree
         ?r   )convert
bad_domainhasattrr   eulerprecquadinfintr   isint)
r   r   r   r   r'   sr   origr   r   s
   ```      @r   	stieltjesr.      s   AAAA1u~~FGGs%&--022#-Av6II:%a(GD!sxxr	
C  88D
 r6CH((1qkQ(7C"9s1c6{*HHQ377rH2FF1IqL!A#QqS!11Q3!77!A#a%)CAv#))A,!hh]2I s   +B)F 	Fc                 ,   t        |      }|| j                  k(  s|| j                  k(  r=|dk  r,|| j                  k(  r|dk(  r| j                  S | j                  S | j                  S |dk(  r| j	                  |      rY| j                  dd|z  z         }| j                  dd|z  z
        }| j                  | j                         dz  |z  d||z
  z  z
  S | j                  |      r|S | j	                  | j                  dd|z  z               | j                  | j                        dz  |z  z
  S |dkD  rd|dz
  z  | j                  |dz
  dd|z  z
        z  }d|dz
  z  | j                  |dz
  dd|z  z         z  }| j	                  |      r4|dk(  r'd| j                  | j                        z  d||z   z  z   S d||z   z  S |dk(  r6| j                  d| j                  | j                        z  d||z   z  z         S | j                  d||z   z        S y )Nr   r         ?y              ?             r         )r*   r)   ninfzero_imloggammar   r   isinf	polygammalogr   )r   t
derivativedr   bs         r   siegelthetar>   ,   s   JA	
cggchhq5CHH}axx77N88OAv771:T$q&[)AT$q&[)AFF366N?1$Q&qs33yy|773<<T!V45svvq8H8JJJ1uacN3==1d46k::QqSM#--!T$q&[99771:AvCGGCFFO+D!A#J66QqSz!AvwwtCGGCFFO3D!A#J>??wwtQqSz** r   c           	           d j                   z   j                  d j                  dz  dz   d j                  z  z        z         z  } j	                   fd|      S )Nr   r      c                 F    j                  |       j                  z  z
  S N)r>   r   )r:   r   r   s    r   <lambda>zgrampoint.<locals>.<lambda>S   s    #//!"4SVVAX"= r   )r   r   lambertwefindroot)r   r   gs   `` r   	grampointrH   N   sU     	
#&&3<<1Q355(9::;;A<<=qAAr   c           
          t        |j                  dd            } j                  |      } j                  |      } j	                  |      } j
                  }	 t        |      d|z  kD  r>|dz  |k  r6 j                  ||      } j                  |      r j                  |      S |S  xj
                  dz  c_         j                   j                  |            } j                  d j                  |z  z         |dk(  r1|z  }| _         j                  |      r j                  |      S |S  j                  d j                  |z  z   d       j                  |d      |dk(  rD j                  |z  z  z   z  }| _         j                  |      r j                  |      S |S  j                  d j                  |z  z   d       j                  |d      dz   j                  z  z
  |dk(  rMfd	}	 j                  |	d      }| |z  }| _         j                  |      r j                  |      S |S  xj
                  d
z  c_         j                  d j                  |z  z   d       j                  |d      dz  d j                  z  z  z  z
  z
  |dk(  r\fd}	 j                  |	d      } j                   |z  |z  }| _         j                  |      r j                  |      S |S  j                  d j                  |z  z   d       j                  |d       fd}	 j                  |	d      |dk(  rQ f
d}	 j                  |	d      }||z  }| _         j                  |      r j                  |      S |S |dkD  r fd}
 j                  |
||dz
        S y # t        $ r Y Gw xY w)Nr;   r     r      r"   r   r;   c                       dz  z   z  gS Nr    )comb1theta1zz1z2s   r   termszsiegelz.<locals>.termsz   s    bDKQuW--r   r!   r   c                  2    dz  z  dz   z  z  z   gS )Nr   rO   )rP   comb2rQ   rR   rS   rT   z3s   r   rU   zsiegelz.<locals>.terms   s(    vXb[!B$u*b5j99r      c                  v    dz  d j                   z  dz  z  z  ddz  z  dz  z   j                   z  gS )NrY   r   r   )r   rQ   theta2theta3theta4s   r   rU   zsiegelz.<locals>.terms   sL    	2cee8FAI-f4blvIfceeFl, 	,r   c                  j   
 ddz  z  z  dj                   z  z  z  dz  z  dz   z  	z  gS )N   r   r[   rY   r^   )
rW   comb3r   rQ   r_   rR   rS   rT   rX   z4s
   r   rU   zsiegelz.<locals>.terms   sL    vqy[^RXb[%76"2eR5* *r   c                 *    j                  | d      S )NrY   rL   )siegelz)r   r   s    r   rC   zsiegelz.<locals>.<lambda>   s    ckk!k2 r   )r   )r*   getr#   r   r5   r'   absrs_z_is_real_typeNotImplementedErrorexpjr>   zetar   sum_accuratelydiff)r   r:   kwargsr<   t1t2r'   r   e1rU   hrP   rW   rd   rQ   r_   r`   ra   rR   rS   rT   rX   re   s   `          @@@@@@@@@@@@r   rg   rg   V   s   FJJ|Q'(AAA	B	B88Dr7SX"a%"*AA  #wwqz!H HHNH	#//!$	%BSUU1WAAvqDQ771:r		#ceeAg+!	,B__Q1_-FAvUU2Xr!F({#Q771:r		#ceeAg+!	,B__Q1_-FAIceeFl"EAv	. 	.ua(SUQ771:r	HHNH	#ceeAg+!	,B__Q1_-FAIagfnV++F2EAv	: 	:ua(eeVBYq[Q771:r		#ceeAg+!	,B__Q1_-F, , ua(EAv	* 	* ua(TQ771:r	1u2xx1!x$$ y  s   )AO3 6O3 3	P ?P )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                     dd l }|j                  |       }|j                         D cg c]  }t        |       }}t	        |d         dk(  sJ |t
        d d  y c c}w )Nr      )urlliburlopen	readlinesfloatround_zeta_zeros)urlrx   r<   r   Ls        r   _load_zeta_zerosr      sT    sA;;=)aq)A)1;"KN 	*s   Ac           	      l   t        |      }|dk  r | j                  |       j                         S |dk(  rt        d      |t	        t
              kD  r|dk  rt        |       |t	        t
              kD  rt        d      | j                  d| j                  | j                  t
        |dz
                 S )Nr   zn must be nonzeroi zn too large for zetazerosr"   r   )r*   zetazero	conjugate
ValueErrorlenr}   r   rl   mpcrF   rg   )r   r   r~   s      r   oldzetazeror      s    AA1u||QB))++Av,--3{V3{!"=>>773S[[+ac2BCDDr   c           	         |dk(  r| j                   S t        |      dkD  rZ| j                  |      }d| j                  | j                  |            z  }t        |      t        |      | j                  z  k  r|S t        |      dk  r8| xj
                  t        | j                  t        |      d             z  c_        | j                  x}}| j                  |      }d}t        |      t        |      | j                  z  kD  rO||z  |z  }|||| j                  |dz         z  z  z  }|dz  }t        |      t        |      | j                  z  kD  rO|S )Nr     r"   g{Gz?r   r   )r4   ri   lisqrtepsr'   r*   r9   oner   	_zeta_int)r   r   r   r=   r,   r:   uks           r   riemannrr      s!   Avxx
1v}FF1Isxx{##q6CF377N"H
1v}CQ**++GGOAq	A	A
a&3q6#''>
!EAI	Q!cmmAaC(())	Q a&3q6#''>
! Hr   c                 X    t        |      }|dk  ryt        | j                  |            S )Nr   r   )r*   r   list_primes)r   r   s     r   primepir      s)    AA1usq!""r   c                 f   t        |      }|dk  r| j                  j                  S |dk  r*| j                  j                  | j	                  |            S | j                  |      }| j                  |d      | j                  |d      z  dz  | j                  d      z  }| j                  | j                  j                  |      |z
  j                  d      }| j                  | j                  j                  |      |z   j                  d      }| j                  j                  ||g      S )Nr   ia
  r   )roundingr@   r<   )r*   _ivr4   mpfr   r   r   r   r   floorr   ceilr=   )r   r   miderrr   r=   s         r   primepi2r      s    AA1uww||4xww{{3;;q>**
&&)C
((1c(
"366!S6#9
9!
;CFFCF<P
PC		377;;s#C'**S	9A#''++c"3&))C8A77;;!ur   c                      j                        rS  j                        dk  rt        d      dk(  r j                  S dk(  r& j	                   j
                   j                        S  j                        }| j                  kD  rdz  S  j                  t        |      z    fd} j                  |      S )Nr   z.prime zeta function defined only for re(s) > 0r   r"   c               3      K   j                   } d}	 |dz  }j                  |      }|s_         |j                  j                  |z              z  |z  }|sy | _         | Xw)Nr   r   )r'   moebiusr   rn   )r-   r   r   r:   r   r,   wps       r   rU   zprimezeta.<locals>.terms  sx     88D AQKKNcffSXXac]++A- s   A(A+)
isnanrer   r)   r   r3   r   r'   r*   ro   )r   r,   rrU   r   s   ``  @r   	primezetar      s    
yy|
vvayA~IJJAvwwCxwwsxx((q	A388|AvXXA	" e$$r   c                 :    t              dk  rt        d      dk(  s
dk(  rdkD  r j                        S dk(  r* j                  ddz
        dz
   j                        z  S dk  r=dk(  rdz  S dk(  rdz
  S dk(  rdz  dz
  z  dz   dz  S dk(  rdz
  z  dz   z  S  j	                        rz  S  j                        rS t              dkD  r fd	} j                  |      z  z  S  fd
} j                  |      S )Nr   z-Bernoulli polynomials only defined for n >= 0r   r"   r   r   rc   g      ?c               3      K   j                   } |  j                   z  }d}|k  r=| dz   |z
  z  |z  |z  } |dkD  r|dz  s| j                  |      z   |dz  }|k  r<y y wr   )r   	bernoulli)r:   r   r   r   r   rR   s      r   rU   zbernpoly.<locals>.terms6  sz     AG	AAq&qs1uIaKMA!a%CMM!,,,Q	 q&s   A"A(&A(c               3      K   j                         j                  } d}|k  rB| dz   |z
  z  |z  z  } |z
  }|dkD  r|dz  s| j                  |      z   |dz  }|k  rAy y wr   )r   r   )r:   r   mr   r   rR   s      r   rU   zbernpoly.<locals>.termsB  s     --""AAq&qs1uIaK!OaCA!a%CMM!,,,Q q&s   A'A-+A-)r*   r   r   ldexpr7   r   ri   ro   )r   r   rR   rU   s   ``` r   bernpolyr   !  s<    	AA1uHIIAv!q&QU}}QCx		!AaC "CMM!$444Av6!q&=6!c'>61Q3!9Q;/)6!Q#Ys]++
yy|Av
yy|
1vz		 !!%(1a4//		 !!%((r   c                     t              dk  rt        d      dk  r!dk(  rdz  S dk(  rdz
  S dk(  rdz
  z  S  j                        rz  S  j                        rS dz   }dk(  r3d j	                  d|      dz
  z   j                  |      z  |z  dz  z  S dk(  r3d j	                  d|      dz
  z   j                  |      z  |z  dz  z  S dk(  r_dz  r j                  S dk  s' j                  dz        z   j                  d	z  k  r" j	                   j                               S  fd
} j                  |      |z  S )Nr   z)Euler polynomials only defined for n >= 0r   r   r"   d   g.eT>?r0   c               3      K   j                   } d}j                  ddz         }	 |z
  dz   }|dkD  r|dz  sd|z
  j                  |      z  | z   |dz  }|kD  ry | z  |z
  dz   z  |z  } |dz  }Pw)Nr   r   r   r"   )r   r   r   )r:   r   wr   r   r   rR   s       r   rU   zeulerpoly.<locals>.termsg  s     GGIIa!!AAEa!esCMM!,,Q..FA1u!QqSUAAHA s   A5A8)r*   r   r7   r   r   r   r4   r   r'   	_eulernumro   )r   r   rR   r   rU   s   ```  r   	eulerpolyr   N  sv   AA1uDEEAv6!q&=6!c'>6!QqS'>
yy|!t
yy|	!AAv399Qq>!#$S]]1%55a7!Q$>>Av#))Aa."#CMM!$44Q6A==Cxq588Os7a
1--=99S]]1-r22 e$q((r   Fc                     t        |      }|rt        | j                  |            S |dk  r | j                  | j                  |            S |dz  r| j                  S | j	                  | j                  |d      |      S )Nr   r   r"   )r*   r   r   r4   r   r   )r   r   exacts      r   eulernumr   v  sm    AA3==#$$3wwws}}Q'((1uxx99S]]1S)1--r   c                     | j                   }| j                  }d}|}	 |||z  z  }||z  }t        |      |k  r	 |S ||z  }|dz  }))Nr   )r   r4   ri   )r   r,   rR   tollr   zkterms           r   polylog_seriesr     sg    77(CA	A	
B
AqDy	T	t9s? H 	a	Q r   c                    |dk  r|dz  S d| j                   z  }||z   | j                  |      z  | j                  || j                  |      |z        z  }| j	                  |      r|dk  r| j                  |      }| j                  |      dk  s(| j                  |      dk(  rF| j                  |      dk\  r2||| j                  |      |dz
  z  z  | j                  |dz
        z  z  }|S )Nr   y               @r   )r   facr   r   rk   r   r5   )r   r   rR   twopijr   s        r   polylog_continuationr     s    1us
#&&[F	
3771:Qq	&0@ AAA
AGGAJ
wwqzA~#''!*/cggajAo	VCFF1I!$$SWWQqS\11Hr   c                    | j                   }|dkD  r| j                  }| j                  |      }| j                  }d}	 ||z
  dk7  r?| j	                  ||z
        |z  | j                  |      z  }|rt        |      |k  rn||z  }||z  }|dz  }R|| j                  |      |dz
  z  | j                  |dz
        z  | j                  |dz
        | j                  | j                  |             z
  z  z  }n|dk  r| j                  |       | j                  |       |dz
  z  z  }| j                  |      }| j                  }	d}
	 | j                  |
|z
  dz         }|r4||	z  | j                  |
      |
|z
  dz   z  z  }t        |      |k  rn||z  }|	|z  }	|
dz  }
Xt        | j                  |      r|dk  r| j                  |      }|S )Nr   r   )r   r4   r   r   rn   r   ri   harmonicr   r   rk   r   )r   r   rR   r   r   logzlogmzr   r   logkzr   r=   s               r   polylog_unitcircler     s   77(C1uHHvvay!zxx!}u,swwqz9CIOT	TMEFA  	
SVVAY1cggacl*CLL1,=cffcffQiZ>P,PQQ	
QGGQBK#&&)qs++vvayac!e$Aw
AaCE 23t9s?T	TMEFA  
AGGAJHr   c                 T   | j                   }| j                  |      }t        |      dk  s| j                  }d|z
  }| j                  |       d| j                  z  |z  z  }| j                  |      ||z  | j                  |d|z         z  || z  | j                  |d|z
        z  z   z  d| j                  z  |z  z  S d}d}	 | j                  ||z
        |z  }	t        |	      | j                  k  rn||	z  }|dz  }||z  }||z  }E| j                  d|z
        | |dz
  z  z  |z   S )N   r   r   r"   r   )r4   r   ri   r   r   gammarn   r   )
r   r,   rR   r   r   r   yr:   r   r   s
             r   polylog_generalr     s=   Aq	Aq6A:EEaCFFA2J#&&
#yy|QT#((1SU"33a!eCHHQs1u<M6MMNPQRURXRXPX[\}\\	A	A
xx!}q t9sww	T		Q	Q	Q  99QqS>A21+%))r   c                 v   | j                  |      }| j                  |      }|dk(  r| j                  |      S |dk(  r| j                  |       S |dk(  r|d|z
  z  S |dk(  r| j                  d|z
         S |dk(  r|d|z
  dz  z  S t	        |      dk  s| j                  |      st	        |      dk  rt        | ||      S t	        |      dk\  r8| j                  |      r'd|dz   z  t        | |d|z        z  t        | ||      z   S | j                  |      rt        | t        |      |      S t        | ||      S )Nr   r   r         ?g?gffffff?)r#   rn   altzetar   ri   r+   r   r   r   r*   r   )r   r,   rR   s      r   polylogr     s1   AAAAAvxx{BwAAv!A#wAvqs|Bw!A#z
1v~ciils1v|c1a((
1v}1ac{>#q!A#669McSTVW9XXX
yy|!#s1vq1131%%r   c                    | j                  |      r|dk  rt        |      dz  dk(  r|dz  S |r| j                  |      }n| j                  |      }| j	                  |      r2| j	                  |      r!| j                  | j                  ||            S d|z  }d| j                  ||      | j                  ||      z
  z  S )Nr   r   r   r1   )r+   r*   expjpirm   rk   imr   r   r,   rR   r   r   r=   s         r   clsinr     s    
yy|A#a&1*/s
	JJqMHHQK
 1 1! 4vvckk!A&''	!ACKK!$s{{1Q'7788r   c                    | j                  |      r|dk  rt        |      dz  dk(  r|dz  S |r| j                  |      }n| j                  |      }| j	                  |      r2| j	                  |      r!| j                  | j                  ||            S d|z  }d| j                  ||      | j                  ||      z   z  S )Nr   r   r   r"   )r+   r*   r   rm   rk   r   r   r   s         r   clcosr     s    
yy|A#a&1*/s
	JJqMHHQK
 1 1! 4vvckk!A&''	!AAa 3;;q#3344r   c                 j    	  | j                   |fi |S # t        $ r | j                  |      cY S w xY wrB   )_altzetarl   _altzeta_generic)r   r,   rq   s      r   r   r     s=    's||A((( '##A&&'s    22c                     |dk(  r| j                   d|z  z   S | j                  dd|z
         | j                  |      z  S )Nr   r   r   )ln2powm1rn   )r   r,   s     r   r   r   
  s@    Avww1}IIa1++r   Nc                 |   t        |      }|dk(  r|s|s	  | j                  |fi |S | j                  |      }| j                  }|j                  d      }|j                  d      }|s(|s&| j                  d      | j                  |      d   z
  S |dk(  r|dk7  rt        | j                  |            }	t        | j                  |            }
t        |	      d|z  kD  rd|
z  |k  r|d	k  s|d
k(  r*	 	 |rt        d        | j                  ||fi ||| _        S |dk(  r| j                  S t        |      }|| j                  k(  r@| j                  |      | j                  k(  r|dk(  r| j                  S | j                   S |dz  S | j#                  |      rd|z  S | j                  |      d| j                  z  kD  r'|dk(  r"|s | j                  | j%                  d|       z   S  | j&                  |||fi |S # t        $ r Y w xY w# t        $ r |rt        d       Y nw xY w	 || _        # || _        w xY w)Nr   methodverboser"   r   zeuler-maclaurinrJ   r!   rY   zriemann-siegelz4zeta: Attempting to use the Riemann-Siegel algorithmz0zeta: Could not use the Riemann-Siegel algorithmr   )r*   _zetarl   r#   r'   rh   r   _convert_paramri   r5   r   printrs_zetar)   r   r   r4   r   power_hurwitz)r   r,   r   r;   r   rq   r<   r'   r   r   r   absss               r   rn   rn     s,   JAAvqF	399Q)&)) 	AA88DZZ!Fjj#G
wws|c003A666Av&--__ r7SX"R%$,:?&&
 TU&3;;q*??  Avwwq6Dsww66!9Avww88Os
	4s

vvay1SXX:!q&ww1qb)))CLLAq+F+++] # 		6 + PQ 4s5   G< 5 H <	H	H	H%"H2 $H%%H2 2	H;c                    | j                   }|j                  d      }	 d}| xj                   |z  c_         | j                  |      \  }}| j                  |      dk  r$|rt	        d       	 t        | ||||      || _         S |rt	        d       	 ||z   | _         t        | ||||dz   |      \  }	}
| j                  |	      | j                  |	|
z         z
  }|r%t	        d|	       t	        d|
       t	        d	|d
       ||k  r|	|
z   || _         S t        d|z  t        |dz   d|z              }||j                  dd|z        kD  r| j                  d      # t        $ r Y nw xY w|st	        d       # || _         w xY w)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   maxpreczzeta: too much cancellation)r'   rh   r   r   r   _hurwitz_reflectionrl   _hurwitz_emr   maxminNoConvergence)r   r,   r   r<   rq   r'   r   	extraprecatypeT1T2cancellations               r   r   r   F  s   88Djj#G	I%%a(566!9q=;<*31a?, # =>i'CH aAtBw@FB772;B7Li$i$o|V<i'Bw 	  )S1A3t8-LM	vzz)SX>>++,IJJ  ' 78$ s>   AE5 ,E BE5 A	E5 	E# E5 "E##E5 )E5 5	E>c                 6    |dk7  rt          j                  |      }| } j                  |      r+t        |      }|dk  r j	                  d|z
  |      |dz
  z  S |dk(  s|dk(  st         d|z
  d}d}	| j                        dkD  r'dz  ||z  z  }|	dz  }	 j                        dkD  r' j                        dk  r'||z  z  }dz  |	dz  }	 j                        dk  r'	 |j
                  \  }
|
|	z  z  }
d|
cxk  rk  sJ  J  j                   fdt        ddz         D              }|d j                        z  d j                  z  z  z  z  z  }||z  }|S #  |t        |      k(  sJ t        |      }
dY xY w)Nr   r   QZc              3      K   | ]6  }j                  d z  d |z  z  z
        j                  |f      z   8 yw)r   N)cospir   ).0r   r=   r   qr:   s     r   	<genexpr>z&_hurwitz_reflection.<locals>.<genexpr>  sF       1Q3qs1u9%cll1aU&;; s   <?r   )
rl   r   isnpintr*   r   _mpq_fsumranger   r   )r   r,   r   r<   r   resnegsr   r   shiftprG   r=   r   r:   s   `           @@@r   r   r   k  s   Av!!
&&)C2D
{{1~H6<<!Q'1Q3//SLESL!!	!A	AE	A
&&)a-	Q	QW
 &&)a- &&)q.	QW	Q
 &&)q.
ww1
 qLA;Q;;; q1 	A399Q<366!a	''AFAHCF{{Fs   2E7 7Fc           
         | j                  |      }| }d}|dz  }|}	d}
| j                  |      rt        | j                  |            }|dz
  }	 | j	                  |||z   ||z
  dz
  |g      d   d   }|
|z  }
||z   }| j                  |      }||z  }|g}d|z  }d|z  }|| z  }|r"| j                  |dz   ||z        ||dz   z  z  }nd|||z  z  z  }|d|z  |z  z  }dg}|}d}t        d|	dz         D ]  }d|z  }|dk(  rdg}n
|dz
  |dz
  g}|D ]  }t        ||dz         }||k  r|j                  |d   |z         dg|dz   z  }t        |      D ]  }d|z
  |z
  ||   z  ||<    t        d|dz         D ]  }||xx   ||dz
  z
  ||dz
     z  z  cc<     |}||z  } | j                  ||      |z  | j                  |      z  | z  }||z  }| j                  |      |k  r|
d|z  |z  fc S ||dz   |dz   z  z  } |r t        d||d| j                        d	|       ||dz  }}| j                  |      dk  r|	|	dz  z  }	)
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   r<   r'   r   r   M1M2Nlsums1r   M2alogM2alogM2adlogslogrrM2aM2astailsumUr   factr   j2updsr   DUnir:   s                                    r   r   r     s   AA%C	
B	B
AD
yy|
O	
1B
LLBqD"R%'A3/215
 		d!)yxuaRyll1Q36	2R!A#Y>G"sRi(G3=4''Cq!A# 	"A1BAvs1bd| !A#J6KKR40S!A#Y8AQqSUAaDLBqE8!A#AA1!QqS'1QqS61A(AAT	 D!A%b(99D5AAqLGwwqzCb1Ww...RTBqDM!D)	"* ,B(8#''!*kSVWRTB66!9q=AIAa r   c                 8   
 t         j                  |            d j                  z  k  r	  j                  ||||      S  j                  |d      |dgk7  }t        |      dk(  }|sg|s* j                  fdt        |dz         D              gg fS |r9|d   
 j                   
fdt        |dz         D              }d
z  |z  gg fS t        |      }	|st        |	dz         }|D 
cg c]  }
 j                   }}
|r|D 
cg c]  }
 j                   }}
ng }t        |dz         D ]  }|z   }|z  }|r! j                   j                  ||z  z        }|rx j                  |       }|r)||	z  }|dxx   ||z  z  cc<   |s^|dxx   |z  z  cc<   o j                  }|D ])  
|
xx   ||z  z  cc<   |r|
xx   |z  z  cc<   ||z  }+ |dxx   |z  cc<   |s|dxx   z  cc<    ||fS # t        $ r Y w xY wc c}
w c c}
w )	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   .   K   | ]  }|z   z    y wrB   rO   )r   r   r   r  s     r   r   z_zetasum.<locals>.<genexpr>  s     >QacD[>s   c              3   ^   K   | ]$  }j                  |z         z  |z   z  z   & y wrB   )r   )r   r   r   r   r<   r  s     r   r   z_zetasum.<locals>.<genexpr>  s.     K!!a1Q3+5Ks   *-r   )ri   r   r'   _zetasum_fastrl   fnegr   r   r   r   r   r4   conjr   r   )r   r,   r   r   derivativesreflecthave_derivativeshave_one_derivativer   maxdr<   xsysr   r   xtermytermlogwr:   r  s   ` `       `        @r   r  r    sB    366!9~chh&	$$Q1k7CC 88AT8"D"qc)k*a/HH>&1+>>?CCAAKvac{KKA!GaK="$${DDFm'	(q#((	(B	( +,1chh,,AaC[ ET	HHSWWE	23EFF1I:D"t|1%qEUT\)EGG$ AqEUQY&E1*IA	 qEUNE1-. r6MW # 		 
),s   H 4HH	HHc           	         | j                  |      }t        |      }t        |      }|dkD  rt        d      | j                  }	 | xj                  dz  c_        |dk(  rWd}|D ]:  }|s|dk7  sd}| j
                  }	| xj                  d|dz   z  z  c_        ||	z  }< |r| j                  || _        S | j                  }
t        d|dz         D ]y  }|||z     s|dk(  rI|
|||z     | j                  |||fd      | j                  |||f      | j                  |      z  z
  z  z  }
Z|
|||z     | j                  |||f      z  z  }
{ |
||z  z  }
|| _        |
S # || _        w xY w)Nr   zarbitrary order derivativesr!   r   TF)r#   r   r*   rl   r'   r   r)   r4   r   rn   r9   )r   r,   chir;   r   r<   r'   	have_poler   ru   rR   r  s               r   	dirichletr3    s   AACAJA1u!"?@@88DB6I a %IAHH1Q3'HFA x  HHq1 	7A1Q3x6QqSSXXa!A%:QqE*3771:5&6 7 7A QqSCHHQ1$666A	7 	
QT	2I s%   #E )E /?E 6&E A8E 	E(c                 f     j                   } fd} j                  x}} j                  }d}	||kD  rC||z  }|	dz  }	 j                   j	                  |	             ||	      }t        |      }||kD  rCd}
|j                  d      r j                        }d j                  dz  z  t        d|      z  |dz
  z  z   j                  d j                  z  z        z   j                  ddz  z        z  t         j                  dz              z  }
t        |
      }
||
|	fS )	Nc                 L    j                  dz  dz  z  d       z  z  S )Nr"   r   T)regularized)r  )r   r   r   gammr,   s    r   rC   z&secondzeta_main_term.<locals>.<lambda>7  s-    #,,s1uaaiT,B41":M r   r   r   errorr"   r   r   r2   )r   r4   r)   r   zetazero_memoizedri   rh   r   r   r   r9   r  r   )r   r,   r   rq   r   r   totsumr   mgr   r   sgr7  s   ```         @r   secondzeta_main_termr=  5  s)   
''CMAHHFT	B	A
s($	Qvvc++A./tY s( Czz'VVAY#&&2,s1Ry(RV4SWWT1SVV8_5MM\\$$'	*++.syy1~+>?#h7C?r   c                 "     j                   } fd} j                  x}} j                  }d}	||kD  s|	dk  r;||z  }|	dz  }	 ||	      }|dk(  r j                  }nt        |      }||kD  r5|	dk  r;|j	                  d      r|}
|
|	fS )Nc                 P   j                  ddz
  z  dj                  |       dz  z  dz  z        dj                  |       z  dz
  z  z  j                  |       z  j                  |       z  dj	                  dz        z  j                  j
                        z  z  S )Nr"   r   r0   r   r   )r  r9   mangoldtr   r   r   r   r   r   r,   s    r   rC   z'secondzeta_prime_term.<locals>.<lambda>K  s    #,,sAaCycggaj!m);a"g)EF
cggaj.AaC	 ""%,,q/225((1+>	
399SU	CHHSVV,	,. r   r   	   r   r8  )r   r4   r)   ri   rh   )r   r,   r   rq   r   r   r:  r   r;  r   r   s   ```        r   secondzeta_prime_termrC  I  s    
''C	.A HHFT	B	A
s(a!e$	Qt19BTB s(a!e zz'7C?r   c                      j                        rT j                        dk  r@t        t         j                                    }|dz  s j	                  d      | dz  z  S  j
                  } fd} j                  } |d      } j                  }d}	||kD  r#||z  }|	dz  }	 ||	      }t        |      }||kD  r#dz  z  |z   j                  dz        z  }
|
S )Nr   r   z-0.25r   c                 J    dz  | z  | dz  z   j                  |       z  z  S )Nr0   r"   )r   rA  s    r   rC   z%secondzeta_exp_term.<locals>.<lambda>c  s)    46A+#a%34 r   r"   )
r+   r   r*   r|   r   r   r4   r)   ri   r   )r   r,   r   r   r   r   r:  r   r;  r   r   s   ```        r   secondzeta_exp_termrF  ]  s    
yy|q	QcffQi !1u777#qb!e,,
''C4AXXFQ4D	B	A
s($	QtY	 s(
 	
CE
6#))CE**AHr   c           	          ddz
  z  z  d j                   j                        z   j                  dz        z  z  } j                  |      } xj                  |z  c_        ddz
  z  z  d j                   j                        z   j                  dz        z  z  } j
                  } fd} j                  } j                  }	d}
 ||
      }t        |      }||kD  rA||	k  r<||z  }|
dz  }
 ||
      }||z  }|
dz  }
 ||
      }|}	t        |      }||kD  r||	k  r<||z  }ddz
  dz  z   j                   j                  d j                  dz  z  z        z   dz
  dz  z  z   }|||z   z  }d	}|j                  d
      r||kD  r||	k  s|||k  r9 j                  d      t         j                  t        ||z        d            z  }||	kD  r9 j                  d      t         j                  t        ||	z        d            z  }t        | j
                  dz        } xj                  |z  c_        ||fS )Nr"   r   rY   c                     j                  | d      dj                        z  | z  z  j                  d| z        z  | z   dz
  j                  |       z  z  S )Nr   rY   r"   r   )r   r   r   r   rA  s    r   rC   z*secondzeta_singular_term.<locals>.<lambda>v  sZ    #,,q&#((1+'99
yyQA#a%+- r   r      r   r   r   r8  r!         ?)r   r   r   r   r'   r   r4   r)   ri   r&   r9   rh   r   r*   r   )r   r,   r   rq   factorr   r   r   r:  mg1r   r   mg2polestr   s   ```             r   secondzeta_singular_termrP  p  s6   ac^Qsxx//		#a%0@@AFIHH	Hac^Qsxx//		#a%0@@AF
''C	-AXXF
''C	AQ4D
d)C
)s
$	Qt$	At$i )s
 dNFqsbk>399SWWR	\!^%<<qsbkIID	f	B
Czz'sczggbk3swws6#:r'B#CCSyggbk3swws6#:r'B#CC#swwrz"HH	H38Or   c                    | j                  |      }| j                  |      }| j                  }| j                  |      r| j                  |      dk  rt	        |dz
        |dz  k  r| j
                  S t        t        | j                  |                  }|dz  r| j
                  S d| dz  z  | j                  d| j                  | d      z
  d| dz   z        z  S | j                  }	 t        | ||      }t        | j                  |      d	      }| xj                  |dz   z  c_
        t        | ||d
d
      \  }	}
}t        | ||d
d
      \  }}}t!        | ||d
      \  }}t        | ||      }|
|z   |z   }|	|z
  |z   |z
  }|j#                  d      rJt%        d|	       t%        d|d       t%        d|       t%        d|d       t%        d|       t%        d|       || _
        |j#                  d      rNt        | j                  t	        |            d	      }t        |d|z  z  | j                  dz  d|z  z        }||fS |S # || _
        w xY w)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)r8  r   )r8  r   zmain term =z    computed usingzzeros of zetazprime term =z#values of the von Mangoldt functionzexponential term =zsingular term =r8  rJ  )r#   r   r+   r   ri   r)   r*   r|   fractionr   r'   rF  r   r   r=  rC  rP  rh   r   )r   r,   r   rq   r   r   r'   t3r   rr   r1gtrs   r2ptt4r4r   r:   r   s                       r   
secondzetar[    s9   x 	AAAA
''C
yy|q	Qqs8c$h77NcffQi !q577NA2q5M<<#,,r,"= =a1"Q$iHI J88D a+A&	IM!)#aO
B*3qP
B)#a?B a+eBhrE"HRK::i -$&O<."%&,QR&+#R(zz'A"#ad(CGGBJq!tO,r3w2I s   -C5I 	Ic                    	
 |dk(  r z  S |dk(  r j                        S dk(  r j                  |      |z  S  j                        dk  r j                        rt	        d      t         j                  d j                        z
              } j                  } j                  }t        |      D ]  }|||z   z  z  z  }||z  } | j                  ||z         z  |z   S  j                  |      	ddz  z  z   j                  dz
   	z        	 dz
  z  z  |z  z  z   }dz  
d j                  z   	
fd}|d j                  |d j                  g      z  z  } j!                  |      sG j!                        s6 j!                        s% j                  |      dk  r j#                  |      }|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                     j                  j                  | z        z  | z  z
        dz  | dz  z   z  j                  | z        z  z  S rN   )sinatanexpm1)r:   r   r   rG   ru   r   r,   s    r   rC   zlerchphi.<locals>.<lambda>}  sR    #''!CHHQqSM/!A#-.
Q$q!t)a#))AaC.	(* r   )rn   r   r   r   r   r*   r   r4   r   r   lerchphir   r  r   r(   r)   r   chop)r   rR   r,   r   r   r   zpowr   r   rG   ru   r   s   ` ``     @@@r   ra  ra    s   b 	AvaRyAvxx1~Av{{1a 1$$
vvay1};;q>BCC366!9%&HHww 	A1q AAID	 cll1Q!,,q00q	A	1QT6
S\\!A#r!t,ac{:QTAAA	AA	#&&A	* 	*A388A377|$	$$A66!9SVVAYsvvaySVVAY]HHQKHr   )r   )r   )z2http://www.dtc.umn.edu/~odlyzko/zeta_tables/zeros1)F)r   r   N)r   r   )gQ?)+
__future__r   libmp.backendr   	functionsr   r   r	   r.   r>   rH   rg   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   r   r   r   r  r3  r=  rC  rF  rP  r[  ra  rO   r   r   <module>rg     s@   % " 9 9# #J + +B B B J% J%Z. 
E 
E  , # #   % %F *) *)X %) %)N . .	"H*( & &* 
9 
9 
5 
5 ' ' , ,
 3, 3,j " "H'R=B ()sE ; ;z #!  B((&"H  D j jr   