
    "`h                         d Z ddlZ G d de      ZddlmZ d Zd Zd	 Zd
 Z	ddZ
dgfdZddZddZddZddZedd       Zedd       Zy)aI  
---------------------------------------------------------------------
.. sectionauthor:: Juan Arias de Reyna <arias@us.es>

This module implements zeta-related functions using the Riemann-Siegel
expansion: zeta_offline(s,k=0)

* coef(J, eps): Need in the computation of Rzeta(s,k)

* Rzeta_simul(s, der=0) computes Rzeta^(k)(s) and Rzeta^(k)(1-s) simultaneously
  for  0 <= k <= der. Used by zeta_offline and z_offline

* Rzeta_set(s, derivatives) computes Rzeta^(k)(s) for given derivatives, used by
  z_half(t,k) and zeta_half

* z_offline(w,k): Z(w) and its derivatives of order k <= 4
* z_half(t,k): Z(t) (Riemann Siegel function) and its derivatives of order k <= 4
* zeta_offline(s): zeta(s) and its derivatives of order k<= 4
* zeta_half(1/2+it,k):  zeta(s)  and its derivatives of order k<= 4

* rs_zeta(s,k=0) Computes zeta^(k)(s)   Unifies zeta_half and zeta_offline
* rs_z(w,k=0)    Computes Z^(k)(w)      Unifies z_offline and z_half
----------------------------------------------------------------------

This program uses Riemann-Siegel expansion even to compute
zeta(s) on points s = sigma + i t  with sigma arbitrary not
necessarily equal to 1/2.

It is founded on a new deduction of the formula, with rigorous
and sharp bounds for the  terms and rest of this expansion.

More information on the papers:

 J. Arias de Reyna, High Precision Computation of Riemann's
 Zeta Function by the Riemann-Siegel Formula I, II

 We refer to them as I, II.

 In them we shall find detailed explanation of all the
 procedure.

The program uses Riemann-Siegel expansion.
This  is useful when t is big, ( say  t > 10000 ).
The precision is limited, roughly it can compute zeta(sigma+it)
with an error less than exp(-c t) for some constant c depending
on sigma.  The program gives an error when the Riemann-Siegel
formula can not compute to the wanted precision.

    Nc                       e Zd Zd Zy)RSCachec                     ddi i g| _         y )Nr   
   )	_rs_cache)ctxs    9/usr/lib/python3/dist-packages/mpmath/functions/rszeta.py__init__zRSCache.__init__6   s    BB    N)__name__
__module____qualname__r
    r   r	   r   r   5   s    (r   r      )defunc                 X   |dz   }|dz  }t        | j                  d|dz   z        d|z  dz   | j                  |      z
        }| j                  d|z        }t        | j                  d|z        | j                  |      dz   |z         }|| _        i }| j                  |d<   | j
                  |d	<   t        dd|z  d	z         D ]  }	||	d	z
     | j
                  z  ||	<    |dz   | _        i }
i }t        d|d	z         D ]P  }	d
|	z  | j                  d|	z        z  }| j                  |      | j                  d|	z        z  }||d|	z     z  |
|	<   R t        dd|z  d	z         D ]3  }	| j                  | j                  |	      z  }|d|	z  z  }|||	   z  ||	<   5 d| _        d| j                  |      z
  }i }t        d|d	z         D ]  }	d| _        t        | j                  d|	dz   z        d|	z  |z         }|| _        d}t        d|	d	z         D ]  }|d
|z  |
|   z  |d|	z  d|z  z
     z  z  }! d
|	d	z   z  | j                  z  |z  ||	<    i }t        d|d	z         D ]v  }	d| _        t        | j                  d|	dz   z        d|	z  |z         }|| _        d}t        d|	d	z         D ]&  }|| j                  |	|z
  z  |
|   z  ||	|z
     z  z  }( |||	<   x d| _        d| j                  |      z
  }t        dd|z  |z         }|| _        | j                  | j                  d            dz  }| j                  d      dz  }i }t        d|      D ]9  }	d| _        t        dd|	z  |z         }|| _        |||	   z  |||	   z  z   |d|	z  <   ; t        d	d|z  d      D ]  }	d||	<   	 ||||gS )a  
    Computes the coefficients  `c_n`  for `0\le n\le 2J` with error less than eps

    **Definition**

    The coefficients c_n are defined by

    .. math ::

        \begin{equation}
        F(z)=\frac{e^{\pi i
        \bigl(\frac{z^2}{2}+\frac38\bigr)}-i\sqrt{2}\cos\frac{\pi}{2}z}{2\cos\pi
        z}=\sum_{n=0}^\infty c_{2n} z^{2n}
        \end{equation}

    they are computed applying the relation

    .. math ::

        \begin{multline}
        c_{2n}=-\frac{i}{\sqrt{2}}\Bigl(\frac{\pi}{2}\Bigr)^{2n}
        \sum_{k=0}^n\frac{(-1)^k}{(2k)!}
        2^{2n-2k}\frac{(-1)^{n-k}E_{2n-2k}}{(2n-2k)!}+\\
        +e^{3\pi i/8}\sum_{j=0}^n(-1)^j\frac{
        E_{2j}}{(2j)!}\frac{i^{n-j}\pi^{n+j}}{(n-j)!2^{n-j+1}}.
        \end{multline}
              @r            (   r   r      	      2g      ?)maxmag	_eulernumpreconepirangempffacjsqrtexpjpi)r   JepsnewJneweps6wpvwEwppipipowernvwvawawpp1aP1wpp1sumpkP2wpp2wpc0wpcmunucs                             r	   _coefrC   N   s/   : Q3D"fG swwr46{#QtVAXcggg.>%>?D 	afA" swwr$wq$!67DCHGGAJGAJ1QtVAX )QqS\#&&(
)
 AvCHAA1T!V_ 1Ws}}QqS))WWR[1%!_! 1QtVAX WWSWWQZq!t9
]! CH  E	B1T!V_ '3772qs8$QqSY/q1 	0Ab1W!$Qqs1Q3wZ//D	0ac{CEE!$&1' 
B1T!V_ 3772qs8$QqSY/q1 	1ASUUQqS\QqT)!AaC&00D	11 CHswwwD
a$t
CCH	#''#,		!B	D	!	BA1T] #!AaCHoBqE"RU("!A#	#
 1QtVA !'1g&&r   c                      j                   }||d   k  r||d   k\  r
|d   |d   fS  j                  j                  }	 t         j                  ||      }| j                  _          j                  urPt	         fd|d   j                         D              |d<   t	         fd|d   j                         D              |d<   | j                   d d   j                   d    j                   d   fS # | j                  _        w xY w)Nr   r   r   r   c              3   J   K   | ]  \  }}|j                  |      f  y wNconvert.0r;   r3   r   s      r	   	<genexpr>zcoef.<locals>.<genexpr>   "     Geq#++a.)G    #c              3   J   K   | ]  \  }}|j                  |      f  y wrF   rG   rI   s      r	   rK   zcoef.<locals>.<genexpr>   rL   rM   )r   _mpr!   rC   dictitems)r   r*   r+   _cacheorigdatas   `     r	   coefrU      s    ]]FF1I~#*ay&)##77<<DSWWa%
#''GtAw}}GGQGtAw}}GGQCMM!==S]]1--- s   C2 2Dc                    d|z  |z  }| j                  |      }d| j                  | j                        z  | j                  |      z   | j                  |      z   dz  | j                  d| j                  z        dz  z
  }d|z  dz
  }| j                  |dz         | j                  |dz  dz         z
  dz  | j                  |dz   dz        z
  }	|||z  |	z   k  rb|dkD  r]|dz
  }| j                  |dz         | j                  |dz  dz         z
  dz  | j                  |dz   dz        z
  }	|||z  |	z   k  r|dkD  r]|}
|
S )Ngbk5_@r   r   r         @r   )lnr#   loggamma)r   xAxeps4axB1xLaux1aux2maux3xMs              r	   aux_M_Fprd      sE    r>%D66$<DcffSVVnSVVC[(2A5svvah7G7IID	"QA<<!S\\!C%'22A
5s||QqS"H7M
MD!D&$,AaCEQqS!#,,quQw"77:CLL!A#r<RR !D&$,AaC 
BIr   c                     |d|z  z  }||z  dz  }|| j                  ||dz  z  |dz
  dz        z  |z  }t        ||      }|S )Nx  gJR_@r   r   r   )powermin)	r   rZ   r[   r\   r]   rc   h1h2h3s	            r	   aux_J_neededrl      sZ    
 
BB	Q&	&B	ciiBEBqD!8,	,r	1B	RBIr   c                 h6     j                   } j                  |      } j                  |      }d|z
  }d _          j                  |d j                  z  z        }||z  }||z  }	 j                  d j                  |      dz
        }
 j                  d j                  |	      dz
        } j                  d|       }|dz  }||
z  dz  }||z  dz  }d _         |dkD  r4d}t        j                  d|      d	z  }t        j                  d|      }d}n5d
}t        j                  d|       d	z  }t        j                  d|       }d}|dkD  r4d}t        j                  d|      d	z  }t        j                  d|      }d}n5d
}t        j                  d|       d	z  }t        j                  d|       }d}d _         d}d|z   j                  |dz        z   j                  ||z  |       z  |k\  r:|dz   }d|z   j                  |dz        z   j                  ||z  |       z  |k\  r:t        d|      }d}d|z   j                  |dz        z   j                  ||z  |       z  |k\  r:|dz   }d|z   j                  |dz        z   j                  ||z  |       z  |k\  r:t        d|      }d|z  d|z  |z  dz  k\  sOd|z  dz   |z   dk  sAt        |      |dz  kD  s0d|z  d|z  |z  dz  k\  sd|z  dz   |z   dk  st        |      |dz  kD  r| _         t        d      t        ||      }|d|z  z  }|d|z  z  }|d|z  z  }|d|z  z  }t         |||||      }t         |||||      } t        ||       }!t         |||||      }"t         |||||       }#t        |"|#      }"d}$d j                  z  |$z   j                  |$dz         z  }%|%|"kD  r |$dz   }$d j                  z  |%z  |$z  }%|%|"kD  r i }&t        j                  t        j                  z  |z  |z  }'t        j                  t        j                  z  |z  |z  }(t!        dd      D ]  })t        j                  |'|)dz        d|z  z  }*t        j                  |(|)dz        d|z  z  }+t        |*|+      }, j                  |)dz          j                  |)dz  dz         z  }-t        j                  |-      }-|,|-z  t        ||      z  |&|)<    t        d|z  dz
  d      dz   }.d|$z  }/ j                  d|$z        }0t!        d|.      D ]8  })t        |0 j                  |/ j                  |)dz         z  |&|)   z              }0: |0 j                  |      z   dz    _          j                  |d j                  z  z        } j#                  |      }1dd||1z
  z  z
  }2 j#                  |2 j%                  d      |0z  z        }3|2 j%                  d      |0z  z  |3z
  }4|4dk  r|3}3n|3dz   }3 j'                  |3 j%                  d      |0 z  z        }2 j                   j'                  d j                  z        |$       j                  |$dz         dz  |$z  z  }5i }6i }7t)         |$|5      \  }7}8|7j+                         }6i }9t!        |!d|z  dz
        D ]  }:d|9|:<   	 i }9|0 _         t!        d|!dz         D ]Z  })d};t!        d|$z  |)z
  dz
  dd      D ]  }<|;|2z  |6|<   z   }; |;|9|)<   t!        dd|$z  |)z
  dz
        D ]  }<|<dz   |6|<dz      z  |6|<<    \ i }=t        d j                  d|z  |z              }>d j                  dt        |      z   |z        z    j                  |      z
  dz
  }? j-                  d j                   j                  z  |z  |z  |z  |z  z        dz  }@t!        d|      D ][  }: j                   j                   j                  |:dz
                     j#                  |:@z        z
  |?z   }At        |A|>      |=|:<   ] |=d   dz    _         dd|z  z
  }Bi }Cd|Cd<   d|Cd <   d|Cd!<   d|Cd"<   d|Cd#<   d|Cd$<   d|Cd%<   d|Cd&<   t!        d|      D ]2  }:|=|:   dz    _         t!        dd|:z  dz  dz         D ]  }<d|:z  d|<z  z
  })|)dk7  r[ j.                  |)z  }D|Ddz  }EB|Dz  dz  }F|)dz    }G|GCd|:dz
  |<dz
  f   z  |E|Cd|:dz
  |<f   z  z   |F|Cd|:dz
  |<dz
  f   z  z   |Cd|:|<f<   ndCd|:|<f<   t!        d|<      D ]e  }HCd|:|Hf    j%                  d'       j1                  d|<z  d|Hz  z
        z   j1                  |<|Hz
        z  z  }I|Cd|:|<fxx   d|<|Hz
  z  |Iz  z  cc<   g  dCd|:d(f<   d|Cd|:df<   d|Cd|:d|:z  dz  dz   f<   5 t!        d(|dz         D ]Z  }Jt!        d(|      D ]I  }:t!        d)t        dd|:z  dz  dz               D ]%  }<Jdk  s|:dk  s|<dk  s|<d|:z  dz  kD  sdCJ|:|<f<   ' K \ t!        d|dz         D ]  }Jt!        d|      D ]{  }:|=|:   dz    _         t!        dd|:z  dz  dz         D ]T  }<dJz  dz
  C|Jdz
  |:dz
  |<dz
  f   z  d||:z   dz
  z  |C|Jdz
  |:dz
  |<dz
  f   z  z   }/|/|C|Jdz
  |:dz
  |<dz
  f   z
  |C|J|:|<f<   V }  i }Kt        d j                  d|z  |z              }>d j                  dt        |      z   |z        z    j                  |      z
  dz
  }L j-                  d j                   j                  z  |z  |z  |z  |z  z        dz  }Mt!        d|      D ][  }: j                   j                   j                  |:dz
                     j#                  |:Mz        z
  Lz   }Nt        |N|>      K|:<   ] Kd   dz    _         dd|z  z
  }Oi }Pd|Pd<   d|Pd <   d|Pd!<   d|Pd"<   d|Pd#<   d|Pd$<   d|Pd%<   d|Pd&<   t!        d|      D ]2  }:K|:   dz    _         t!        dd|:z  dz  dz         D ]  }<d|:z  d|<z  z
  })|)dk7  r[ j.                  |)z  }D|Ddz  }EO|Dz  dz  }F|)dz    }G|GPd|:dz
  |<dz
  f   z  |E|Pd|:dz
  |<f   z  z   |F|Pd|:dz
  |<dz
  f   z  z   |Pd|:|<f<   ndPd|:|<f<   t!        d|<      D ]e  }HPd|:|Hf    j%                  d'       j1                  d|<z  d|Hz  z
        z   j1                  |<|Hz
        z  z  }I|Pd|:|<fxx   d|<|Hz
  z  |Iz  z  cc<   g  dPd|:d(f<   d|Pd|:df<   d|Pd|:d|:z  dz  dz   f<   5 t!        d(|dz         D ]Z  }Jt!        d(|      D ]I  }:t!        d)t        dd|:z  dz  dz               D ]%  }<Jdk  s|:dk  s|<dk  s|<d|:z  dz  kD  sdPJ|:|<f<   ' K \ t!        d|dz         D ]  }Jt!        d|      D ]{  }:K|:   dz    _         t!        dd|:z  dz  dz         D ]T  }<dJz  dz
  P|Jdz
  |:dz
  |<dz
  f   z  d||:z   dz
  z  |P|Jdz
  |:dz
  |<dz
  f   z  z   }/|/|P|Jdz
  |:dz
  |<dz
  f   z
  |P|J|:|<f<   V }  i }Qi }Rd _          j                  d|dz   z        }E j                  d*|dz   z  |z        }S j                  ||z  t        j                   j                        z        dz
  }Tt!        d|      D ]  }<S|<Tz  z
   j                   j1                  |<dz               dz  z   }Ut        E|U j                  |      z
  dz         dz   dz   d+z  Q|<<   t        |E j                  |dz         |Uz    j                  |      z
  dz         dz   dz   R|<<    i }Vi }Wd _          j                  d|dz   z        }E j                  d*|dz   z  |z        }X j                  ||z  t        j                   j                        z        dz
  }Yt!        d|      D ]  }<X|<Yz  z
   j                   j1                  |<dz               dz  z   }Zt        E|Z j                  |      z
  dz         dz   d+z  V|<<   t        |E j                  |dz         |Zz    j                  |      z
  dz         dz   dz   W|<<    i }[t!        d|dz         D ]5  }Jt!        d|      D ]$  }<t!        d(d|<z  dz  dz         D ]
  }\d[J|<|\f<    & 7 t!        d|dz         D ]  }Jt!        d|      D ]p  }<Q|<    _         t!        dd|<z  dz  dz         D ]L  }\CJ|<|\f   |9d|<z  d|\z  z
     z  |8d|<z  |\z
     z  [|J|<|\f<   |[|J|<|\f   d j2                  z  |\z  z  |[|J|<|\f<   N r   fd,}]i }^t!        d|dz         D ]5  }Jt!        d|      D ]$  }<t!        d(d|<z  dz  dz         D ]
  }\d^J|<|\f<    & 7 t        Qd   Vd         dz    _          ]|      }_ j-                  |_       }`t!        d|dz         D ]  }at!        d|      D ]  }<Q|<    _         t!        dd|<z  dz  dz         D ]_  }\d^a|<|\f<   t!        d|adz         D ]C  }J j5                  a|J       j                  `|J      z  [|a|Jz
  |<\f   z  }b^|a|<|\fxx   |bz  cc<   E a   i }ct!        d|dz         D ]5  }Jt!        d|      D ]$  }<t!        d(d|<z  dz  dz         D ]
  }\dcJ|<|\f<    & 7 t!        d|dz         D ]  }Jt!        d|      D ]p  }<V|<    _         t!        dd|<z  dz  dz         D ]L  }\PJ|<|\f   |9d|<z  d|\z  z
     z  |8d|<z  |\z
     z  c|J|<|\f<   |c|J|<|\f   d j2                  z  |\z  z  |c|J|<|\f<   N r  i }dt!        d|dz         D ]5  }at!        d|      D ]$  }<t!        d(d|<z  dz  dz         D ]
  }\dda|<|\f<    & 7 t!        d|dz         D ]  }at!        d|      D ]  }<V|<    _         t!        dd|<z  dz  dz         D ]_  }\dda|<|\f<   t!        d|adz         D ]C  }J j5                  a|J       j                  `|J      z  c|a|Jz
  |<\f   z  }bd|a|<|\fxx   |bz  cc<   E a   t        Qd   Vd         dz    _         i }ed|ed<   |ed   |z  |ed<   t        |Qd   |Vd          _         t!        d|      D ]  }<e|<dz
     |ed   z  |e|<<    i }ft!        d|dz         D ]K  }at!        d|      D ]:  }<Q|<    _         t!        dd|<z  dz  dz         D ]  }\^a|<|\f   e|<   z  f|a|<|\f<    < M i }gt!        d|dz         D ]K  }at!        d|      D ]:  }<V|<    _         t!        dd|<z  dz  dz         D ]  }\da|<|\f   e|<   z  g|a|<|\f<    < M i }ht!        d|dz         D ]K  }at!        d|      D ]:  }:R|:    _         d}it!        dd|:z  dz  dz         D ]  }<ifa|:|<f   z  }i iha|:f<   < M i }jt!        d|dz         D ]K  }at!        d|      D ]:  }:W|:    _         d}it!        dd|:z  dz  dz         D ]  }<iga|:|<f   z  }i ija|:f<   < M i }kd _         t        j                   j                        |z  ||z  z  }ld _          j                  d-|dz   dz  z  |lz  |z        }mt        |m j                  d|dz   z              }m|m _         t!        d|dz         D ]0  }adk|a<   t!        d|dz         D ]  }<kaxx   h|a||<z
  f   z  cc<    2 i }nd _         t        j                   j                        |z  ||z  z  }od _          j                  d-|dz   dz  z  |oz  |z        }pt        |p j                  d|dz   z              }p|p _         t!        d|dz         D ]0  }adn|a<   t!        d|dz         D ]  }<naxx   j|a||<z
  f   z  cc<    2 d _         dt         j                  t        kd                j                  t        nd                     z  }q|d|qz  z  }r| j-                  |d j                  z  z        z  }sd. j                  dd|rz   j                  ||       z  z   |sz        z   }td. j                  dd|rz   j                  ||       z  z   |sz        z   }ut        |t|u       _         |d j                  z  z  }v|dz   j-                  |v      z  |dz  z
   j                  dz  z
  }w j7                  |w       }x ]|      } j                  ||       } j                  ||       }	d|1dz
  z  |z  |xz  }yd|1dz
  z  |	z  |xz  }zd _         d j                  |1 j                  |1d|z
        z    j-                  |1      z  |z        z   }{d j                  |1 j                  |1d|z
        z    j-                  |1      z  |z        z   }|t        |{||      }}|}dz    _         	  j9                  |dt;        |1      dz
  t!        d|dz         d/      \  }~}d _         t        |~|         }t        |k|   |yz        }t        d| j                  dd|z  d0|z  z   z        z         }| _         i }t!        d|dz         D ]  }a~|a   k|a   yz  z   |a<    d _         t        |         }t        n|   zz        }t        d| j                  dd|z  d0|z  z   z        z         }| _         i }t!        d|dz         D ]*  }a|a   n|a   zz  z   |a<    j=                  ||a         ||a<   , | _         fS )1Nr   r   r         @rW   r   r   r   5U@`<@Y?r         ?      9@2Riemann-Siegel can not compute with such precisionr              s@     ,      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   z1.0r   D         ?c                     j                   }|dz   _         j                  | dj                  z  z        }|_         |S Nr   r!   r(   r#   twpaar   s      r	   trunc_azRzeta_simul.<locals>.trunc_a0  =    XX6XXa366l#	r   皙@r   T   )r!   _im_rer(   r#   rg   r   mathpowgammar   absNotImplementedErrorrd   rl   rh   r$   floorr%   rH   rU   copyrX   r"   r&   r'   binomialexpj_zetasumintconj)r   sder	wpinitialr   xsigmaysigmar\   xasigmayasigmaxA1yA1r+   eps1xeps2yeps2xbxcrZ   r]   ybycyAyB1r^   yLLxeps3yeps3r[   yeps4rc   yMMrk   h4r*   jvalueeps5xforeps5yforeps5ra   xaux1yaux1r_   r`   twentyauxwpfpNpnum
differenceeps6cccontpipowersFpr2   sumPr;   xwpdd1xd2xconstxd3xpsigmaxdm1c1c2c3raddr@   ywpdyd2yconstyd3ypsigmaydxwptcoefxwptermxc2xc4xc3ywptcoefywptermyc2yc4yc3	xfortcoefellr   xtcoefr   lachitcoefter	yfortcoefytcoefavxtvytvxtermteytermxrssumxrsboundxwprssumyrssumyrsboundywprssumA2eps8Txwps3ywps3tpiargUxS3yS3xwpsumywpsumwpsumxS1yS1xabsS1xabsS2xwpendxrzyabsS1yabsS2ywpendyrzs   `                                                                                                                                       r	   Rzeta_simulr     s   I 	
AWWQZFZF CHAcffHA6kG6kG 			!SWWW%a'(C		!SWWW%a'(C ))A	z
"Cr6D#IbLE#IbLE CHzXXa'XXaXXa (XXa zXXa'XXaXXa (XXa 
 CH	
B
B$syyC 
 399RT2##6
6%
?T B$syyC 
 399RT2##6
6%
?	QrB	
B
B$syyC 
 399RT2##6
6%
?T B$syyC 
 399RT2##6
6%
?	QrB 
21Qs	"QvaS[1R45G	
21Qs	"QvaS[1R45G!"VWW 	BA AbD\EAbD\E
 1R4LE1R4LE 
#r5!S"	-B	#r5!S"	-BBA 
c2uab	1B	c2uab	1B	RB
Ah]SYYqs^+F
2+aCCFF(F"1$ 2+ 
Dwwtwws"1$Hwwtwws"1$H1R[ /1Q3'b11Q3'b15% yy1~cii#c	22yy9Su--Q/ 1Q^AF
q&C772a4=D1V_ >4SYYqs^!3DG!;<=>
 cggaj #CHAcffHA		!A	!QqS'	A
 			!SWWS\4'()CcggclD()#-JS!eC3773<4%012A 99S[[366*A.		!A#q0@0BCD 
BD#q$'ND(yy{B	B1ac!e_ 1	BCH1QqS\ #qs1uQwr"% 	%A1Hr!u$D	%1q1Qq! 	#AqS2ac7NBqE	## 
D	Qswwr!tAv	B
SWWaFmR'(
(
7
9CVVAsvvcff}Qq(,S012A5F1QZ ggchhsyy3/01#))AfH2EEcICQ
 AwrzCH6lG	BBvJQ"V*!5	qRYBwKq2g;Q"V*16
1QZ 772:q1a" 	3A!AaCA!tWWQYqDBJ>qS6R!A#ac	]*2b1Q3qk>9"R!A#ac	]:JJ1Qq5	1Qq5	q 3A1Qq5	3775>#''!A#ac'2B#B3771Q3<#OPCq1uI21+s!22I3	3 1Qr6
b1RjQBq1Q36!8|$47  Bs1uo #r! 	#A2c!AaCF1Ho. #Tacaca!Qh!"Br!AvJ#	##
 Ac!en 4q 	4AAwrzCH1QqS!VAX& 4rT!VR1QqS1--a!nR1QqS1=M.MM 2bd1Q3qsl#332a6
4	44 
D	Qswwr!tAv	B
SWWaFmR'(
(
7
9CVVAsvvcff}Qq(,S012A5F1QZ ggchhsyy3/01#))AfH2EEcICQ
 AwrzCH6lG	BBvJQ"V*!5	qRYBwKq2g;Q"V*16
1QZ 772:q1a" 	3A!AaCA!tWWQYqDBJ>qS6R!A#ac	]*2b1Q3qk>9"R!A#ac	]:JJ1Qq5	1Qq5	q 3A1Qq5	3775>#''!A#ac'2B#B3771Q3<#OPCq1uI21+s!22I3	3 1Qr6
b1RjQBq1Q36!8|$47" Bs1uo #r! 	#A2c!AaCF1Ho. #Tacaca!Qh!"Br!AvJ#	##
 Ac!en 4q 	4AAwrzCH1QqS!VAX& 4rT!VR1QqS1--a!nR1QqS1=M.MM 2bd1Q3qsl#332a6
4	44 HGCH	QqS	B
''"ac(2+
C
''#a%		#&&))
*1
,C1QZ GAcEk#''#''!C%.1"442c#''%.023A5r93>"SWWQqS\#-cggen<Q>?A2E
G HGCH	QqS	B
''"ac(2+
C
''#a%		#&&))
*1
,C1QZ FAcEk#''#''!C%.1"44Bs3775>1!34b8#="SWWQqS\#-cggen<Q>?A2E
F IAc!en &q 	&AR!Qq) &$%	"Qs(#&	&& Ac!en Iq 	IA{CHQqsAvax( I$&r!CxLAaC#I$>x!C?P$P	"Qs(#$-b3h$7!CEE'C$H	"Qs(#I	II FAc!en #q 	#AR!Qq) #!"r!Cx #	## 8A;x{+A-CH
B
&&*BQs1u~ 2q 	2A{CHQqsAvax( 2#$s1Sy!3q5/ 2B \\#b1#))Br2BB9SQSVTUVY\CZZH3q9%1%22	22 IAc!en &q 	&AR!Qq) &$%	"Qs(#&	&& Ac!en Iq 	IA{CHQqsAvax( I$&r!CxLAaC#I$>x!C?P$P	"Qs(#$-b3h$7!CEE'C$H	"Qs(#I	II FQs1u~ $q 	$AR!Qq) $"#s1Sy!$	$$ Qs1u~ 2q 	2A{CHQqsAvax( 2#$s1Sy!3q5/ 2B \\#b1#))Br2BB9SQSVTUVY\CZZH3q9%1%22	22 8A;,Q.CH	BBqEqE!GBqE8A;x{+CH1QZ  1Q3"Q%1  CQs1u~ :q 	:A{CHQqsAvax( :!'Ac	!2BqE!9C#I:	:: CQs1u~ :q 	:A{CHQqsAvax( :!'Ac	!2BqE!9C#I:	:: EQs1u~ q 	AqzCHB1ac1fQh' #c#a'l"#E#a%L	 EQs1u~ q 	AqzCHB1ac1fQh' #c#a'l"#E#a%L	 FCHyy 2%1-HCHwwsQqS1H~h.67H8SWWR1X./HCHQs1u~ *sq1 	*A3K5QqS>)K	** FCHyy 2%1-HCHwwsQqS1H~h.67H8SWWR1X./HCHQs1u~ *sq1 	*A3K5QqS>)K	** CH	
SVAY(#''#fQi.*AB	CB":D	366!QsvvX,A!QtVSYYq&%9991<==E!QtVSYYq&%9991<==E5% CH
QsvvX,CQ3s
QqS
!#&&(
*C#A
AiiF7#GiiF7#G!A#;'
!A
%C!A#;'
!A
%C CH!CIIa&11366!9<dBCCF!CIIa&11366!9<dBCCFEbyCH$ ||Aq#a&(E!CENDAHC CHS]Fs"#FIcgga6!F():&;==?FCH
CQs1u~ ,s8F3KO+C, CHS]Fs"#FIcgga6!F():&;==?FCH
CQs1u~ &s8F3KO+C88CH%C& CH8Or   c                     t        |      } j                  } j                  |      } j                  |      }d _         j	                  |d j
                  z  z        } j                  ||      } j                  d j                  |      dz
        }	 j                  d|       }
|
dz  }|
|	z  dz  }d _        |dkD  r4d}t        j                  d|      d	z  }t        j                  d|      }d}n5d
}t        j                  d|       d	z  }t        j                  d|       }d}d _        d}d|z   j                  |dz        z   j                  ||z  |       z  |k\  r:|dz   }d|z   j                  |dz        z   j                  ||z  |       z  |k\  r:t        d|      }d|z  d|z  |z  dz  k\  sd|z  dz   |z   dk  st        |      |dz  kD  r| _        t        d      |d|z  z  }|d|z  z  }t         |||||      }i }t        |d|z  dz
        D ]  }d||<   	 |d|z  z  } j
                   j
                  z  |z  |z   j	                  d      z  t        j                  z  t        j                  z  }| j                  ||dz  z  |dz
  dz        z  |z  }t!        ||      }d}d j
                  z  |z   j                  |dz         z  }||kD  r |dz   }d j
                  z  |z  |z  }||kD  r i }t        j
                  t        j
                  z  |z  |z  }t        dd      D ]m  }t        j                  ||dz        d|z  z  } j                  |dz          j                  |dz  dz         z  } t        j                  |       } || z  |z  ||<   o t!        d|z  dz
  d      dz   }!d|z  }" j                  d|z        }#t        d|!      D ]8  }t        |# j                  |" j                  |dz         z  ||   z              }#: |# j                  |      z   dz    _         j	                  |d j
                  z  z        } j#                  |      }$dd||$z
  z  z
  }% j#                  |% j%                  d      |#z  z        }&|% j%                  d      |#z  z  |&z
  }'|'dk  r|&}&n|&dz   }& j'                  |& j%                  d      |# z  z        }% j                  d j
                  z  |       j                  |dz         dz  |z  z  }(i })i }*t)         ||(      \  }*}+|*j+                         })i }t        |d|z  dz
        D ]  }d||<   	 |# _        t        d|dz         D ]Z  }d},t        d|z  |z
  dz
  dd      D ]  }-|,|%z  |)|-   z   }, |,||<   t        dd|z  |z
  dz
        D ]  }-|-dz   |)|-dz      z  |)|-<    \ i }.t        d j                  d|z  |z              }/d j                  dt        |      z   |z        z    j                  |      z
  dz
  }0 j-                  d j
                   j
                  z  |z  |z  |z  |z  z        dz  }1t        d|      D ][  } j                   j	                   j                  |dz
                     j#                  ||1z        z
  |0z   }2t        |2|/      |.|<   ] |.d   dz    _        dd|z  z
  }3i }4d|4d<   d|4d <   d|4d!<   d|4d"<   d|4d#<   d|4d$<   d|4d%<   d|4d&<   t        d|      D ]-  }|.|   dz    _        t        dd|z  dz  dz         D ]  }-d|z  d|-z  z
  }|dk7  r[ j.                  |z  }5|5dz  }6|3|5z  dz  }7|dz    }8|8|4d|dz
  |-dz
  f   z  |6|4d|dz
  |-f   z  z   |7|4d|dz
  |-dz
  f   z  z   |4d||-f<   nd|4d||-f<   t        d|-      D ]`  }9|4d||9f    j.                   j1                  d|-z  d|9z  z
        z   j1                  |-|9z
        z  z  }:|4d||-fxx   d|-|9z
  z  |:z  z  cc<   b  d|4d|d'f<   d|4d|df<   d|4d|d|z  dz  dz   f<   0 t        d'|dz         D ]Z  };t        d'|      D ]I  }t        d(t        dd|z  dz  dz               D ]%  }-|;dk  s|dk  s|-dk  s|-d|z  dz  kD  sd|4|;||-f<   ' K \ t        d|dz         D ]  };t        d|      D ]{  }|.|   dz    _        t        dd|z  dz  dz         D ]T  }-d|;z  dz
  |4|;dz
  |dz
  |-dz
  f   z  d||z   dz
  z  |4|;dz
  |dz
  |-dz
  f   z  z   }"|"|4|;dz
  |dz
  |-dz
  f   z
  |4|;||-f<   V }  i }<i }=d _         j                  d|dz   z        }6 j                  d)|dz   z  |z        }7 j                  ||z  t        j                   j
                        z        dz
  }>t        d|      D ]  }-|7|-|>z  z
   j                   j1                  |-dz               dz  z   }8t        |6|8 j                  |      z
  dz         dz   dz   |<|-<   t        |6 j                  |dz         |8z    j                  |      z
  dz         dz   dz   |=|-<    i }?|D ]5  };t        d|      D ]$  }-t        d'd|-z  dz  dz         D ]
  }@d|?|;|-|@f<    & 7 |D ]  };t        d|      D ]p  }-|<|-    _        t        dd|-z  dz  dz         D ]L  }@|4|;|-|@f   |d|-z  d|@z  z
     z  |+d|-z  |@z
     z  |?|;|-|@f<   |?|;|-|@f   d j2                  z  |@z  z  |?|;|-|@f<   N r   fd*}Ai }B|D ]5  }Ct        d|      D ]$  }-t        d'd|-z  dz  dz         D ]
  }@dBC|-|@f<    & 7 |<d   dz    _         A|      }D j-                  |D       }E|D ]  }Ct        d|      D ]v  }-|<|-    _        t        dd|-z  dz  dz         D ]R  }@dBC|-|@f<   t        d|Cdz         D ]6  }; j5                  C|;      E|;z  z  |?|C|;z
  |-@f   z  }FB|C|-|@fxx   |Fz  cc<   8 T x  |<d   dz    _        i }Gd|Gd<   |Gd   |z  |Gd<   |<d    _        t        d|      D ]  }-G|-dz
     |Gd   z  |G|-<    i }H|D ]K  }Ct        d|      D ]:  }-|<|-    _        t        dd|-z  dz  dz         D ]  }@BC|-|@f   G|-   z  H|C|-|@f<    < M i }I|D ]K  }Ct        d|      D ]:  }|=|    _        d}Jt        dd|z  dz  dz         D ]  }-JHC||-f   z  }J JIC|f<   < M i }Kd _        t        j                   j
                        |z  ||z  z  }Ld _         j                  d+|dz   dz  z  |Lz  |z        }Mt        |M j                  d|dz   z              }M|M _        |D ]0  }CdK|C<   t        d|dz         D ]  }-KCxx   I|C||-z
  f   z  cc<    2 d _        d j                  Kd         z  }N|
d|Nz  z  }O| j-                  |d j
                  z  z        z  }Pd, j                  dd|Oz   j                  ||       z  z   |Pz        z   }Q|Q _        |d j
                  z  z  }R|dz   j-                  |R      z  |dz  z
   j
                  dz  z
  }S j7                  |S       }T A|      } j                  ||       }d|$dz
  z  |z  |Tz  }Ud _        d j                  |$ j                  |$d|z
        z    j-                  |$      z  |z        z   }V|Vdz    _        	  j9                  |dt;        |$      dz
  |      d   }Wd _        t        |W|         }Xt        |K|   |Uz        }Yt        d| j                  dd|Xz  d-|Yz  z   z        z         }Z|Z _        i }[|D ]  }CW|C   K|C   Uz  z   [|C<    | _        [S ).a  
    Computes several derivatives of the auxiliary function of Riemann `R(s)`.

    **Definition**

    The function is defined by

    .. math ::

        \begin{equation}
        {\mathop{\mathcal R }\nolimits}(s)=
        \int_{0\swarrow1}\frac{x^{-s} e^{\pi i x^2}}{e^{\pi i x}-
        e^{-\pi i x}}\,dx
        \end{equation}

    To this function we apply the Riemann-Siegel expansion.
    r   r   r   rn   rW   r   r   r   ro   rp   rq   r   rr   rs   rt   r   rf   ru   rv   rw   rx   ry   rz   r{   r   r   r   r|   r}   r   r~   r   r   r   r   r   r   r   r   r   r   c                     j                   }|dz   _         j                  | dj                  z  z        }|_         |S r   r   r   s      r	   r   zRzeta_set.<locals>.trunc_a  r   r   r   r   r   )r   r!   r   r   r(   r#   rg   r   r   r   r   r   r   rd   r$   erh   r   r%   rH   rU   r   rX   r"   r&   r'   r   r   r   r   )\r   r   derivativesr   r   r   sigmar\   asigmaA1r+   r   eps2brB   AB1r   eps3eps4r   r   r2   ri   rj   rk   r*   r   r   foreps5ra   r_   r`   r   r   r   r   r   r   r   r   r   r   r   r   r;   wpdr   d2constd3psigmadr   r   r   r   r   r   r@   wptcoefwptermc4fortcoefr   r   tcoefr   r   r   r   r   tvtermr   rssumrsboundwprssumr  r  r  wps3r  r  r  S3r  S1absS1absS2wpendrzs\   `                                                                                           r	   	Rzeta_setr>    sF   $ k
C I
AGGAJECHAcffHAYYq% F	1cggfoa'	(B
))A	z
"Cr6D8B;D CHqyHHQug%HHQuHHQvw&HHQv CH	A
A#cii#
1Q3r!2
2d
:aC A#cii#
1Q3r!2
2d
:AaA 
1!Ac		qs1uU{1}#e*ad2B!"VWW !A#JD
 1:D 	aq"a(A	B1ac!e_ 1 
s1uB	r	!	SXXa[	(	/	6B	ciiAqD1Q3'*	*Q	.B	RBAh]SYYqs^+F
2+aCCFF(F"1$ 2+ 
Dggdggob "G1R[ !xx1%tAv.yy1~cii#c	22yyt)D.Q	! 1Q^AF
q&C772a4=D1f >4SYYqs^!3DG!;<=> cggaj 2%CHAcffHA		!A	!QqS'	A ))Aswwqz4'(
)Ccggaj$&'+JC!eC3771:./0A 99QsvvXq!399QqS>!#3A#56D 
B	D#q$'ND(	B	B1ac!e_ 1CH1QqS\ $qs1uQwr"% 	&A1H1%D	&1q!A#a%'" 	$AqSBqsGOBqE	$$ C	Q1Q	 B	CGGQs5z\1$%	%cggdm	3A	5BFF1cffSVVmAoa'*2-./2E1QZ WWSXXcii#./01U71CCBFRA
 1vbyCH%[F
AAfI16qah1!E(AgJQ!G*!&	qQvY1QZ 4q6"9q1a" 	2A!AaCA1WWQYTRi]sVa!A#ac	l?2a!A#aj=8Aa!AaCiLH!Aa%!Aa%q 2AAaE(CGGCGGAaC!G,<$<SWWQqS\$IJCa!eH"!c 11H2	2 !Ab&	qQq2vY!!Aa!QqL/4" Bs1uo "r! 	"A2c!AaCF1Ho. "Tacaca!Qh !Ab1fI"	"" Ac!en 2q 	2A1vbyCH1QqS!VAX& 2rT!VQr!tAaC!|_,Qa	]1RT!A#ac\?-JJ!BqD1QqSL/1"Qq&	2	22 GFCH	QqS	B	QqS!	B	Adii''	(	*B1QZ B!B$Yswwswwqu~.r11Bswwt},Q./125
3771Q3<?3774=8:;A=rAq	B H %q 	%AR!Qq) %#$Ac"%	%%
  Gq 	GAqzCHQqsAvax( G#$R#X;r!A#ae)}#<Xac#g=N#NAc"#+BqH#5#%%#~#FAc"G	GG E #q 	#AR!Qq) #!"c!Ci #	## qz!|CH	B
&&*B 1q 	1AqzCHQqsAvax( 1#$c!Ci 3q5/ 1B"||C3b"f< R#. /H#a)$0$11	11 qzA~CH 
BBqEqE!GBqEqzCH1QZ  1Q3"Q%1  
B 8q 	8AqzCHQqsAvax( 8 %c!Ci 0"Q% 73q98	88 D q 	AayCHB1ac1fQh' "bQqk!"DQK	 ECHii!#ac*GCHggcAaC!8nW,t34G'3772qs8,-GCH (c
q1 	(A#J$s1Q3w-'J	(( CH	
SWWU1X	B2;D	CFF1ah<  Asww1T6399Qv#6669::DCH
QsvvX,CQ3s
QqS
!#&&(
*C#A
AYYq5&!F1+	!	#B CH399Qqw//:4?@@ErzCH 
aCF1Hk	21	5B CH3LEc
R E9swwq!E'!E'/':;;<ECH	B (S'%*R-'3(CHIr   c                    | j                  d      | j                  |z  z   }| j                  }d| _        |d| j                  z  z  }|dz   | j	                  d|dz  z  | j                  |      z        z   }|dz   | j	                  d|z  | j                  |      z        z   }|| _        | j                  |      }|| _        t        | |t        |dz               }	|dkD  rF| j                  | j                  d|dz        dz  | j                  | j                        dz  z
        }
|dkD  r4| j                  | j                  | j                  d|dz        z  d	z        }|dkD  r(| j                  | j                  d|dz         d
z        }|dkD  r5| j                  | j                   | j                  d|dz        z  dz        }| j                  |      }|dk(  rd|z  |	d   z  }|dk(  rd|z  }|
|	d   z  |	d   z   z  }|dk(  r<d|z  }| d|	d   z  
z  |	d   |
dz  z  z   |	d   z   | j                  |	d   z  z  z
  z  }|dk(  rZd|z  }d|	d   z  
dz  z  |	d   |
dz  z  z   d|
z  |	d   z  z   }||d|	d   z  z  z
  d|	d   z  |
z  |z  z
  |	d   z   |	d   z  z
  z  }|d	k(  rd|z  }d	|	d   z  
dz  z  |	d   |
d	z  z  z   d|
dz  z  |	d   z  z   }|d|	d   z  |
z  z  z
  d|	d   z  |
dz  z  |z  z
  d|	d   z  |z  z
  d|	d   z  |z  |z  z
  }|d	|
z  |	d   z  z   d	|	d   z  z  z
  d	|	d   z  |
z  |z  z
  |	d	   z   | j                  |	d   z  z  z   }||z  }|| _        | j                        S )z-
    z_half(t,der=0) Computes Z^(der)(t)
    0.5r   r   r   r   r   ru   r   r   r}                     @y                            @r                 (@              @)r%   r'   r!   r#   r   rX   siegelthetar>  r$   r   psir   )r   r   r   r   r   ttwpthetawpzthetar=  ps1ps2ps3ps4expthetazzfs                    r	   z_halfrS  r  s    
ggenSUU1WAICH	
AcffHBlSWWQC[%;<<G
a-#''"R%r
"23
3CCHOOAECH	3q%A,	'B
Qwcggcgga!nQ.1AAB
QwcggceeCGGAacN2145
Qwcggswwq1~oa/0
QwcggsuufSWWQqs^3B67xxH
axhJr!u
ax[BqE	"Q% 
ax\C2a5RU36\)"Q%/beC?@
ax\beGCFN2a5a<'#be3"RU(3,r"Q%x|C//15beCi?@
axxZbeGCFN2a5a<'#q&A6c"Q%imC2a5a 33Br!uHSL@2a5SP#beOAbeGCK'"Q%C71=ceeBqEk#oMqDCH771:r   c                 	   | j                   }| j                  |      }| j                  |      }d| _         |dkD  r| j                  t	        |            }n*d| j
                  z  |dz
  z  t	        d|z
        d|z
  z  z  }|dkD  r%d| j                  |d| j
                  z  z        z  }nd|z  |z  }t	        d|z
        }d|z  t        j                  |      z  }	t        dd| j                  |      z         }
d| j                  d	|z  d
|z  |z  z   d|z  |z  |	z  z         z   |z   dz   }t        |
|      }
t        dd| j                  d|z  |z        z   |z   dz         }d| j                  dd|z  z         z   |z   dz   }|| _         | j                  || j                  || j                  d      z
  z  z
        }|dkD  rF| j                  | j                  d|dz              dz  | j                  | j
                        dz  z
  }|dkD  r(| j                  | j                  d|dz               dz  }|dkD  r(| j                  | j                  d|dz               dz  }|dkD  r'| j                  | j                  d|dz              dz  }|| _         t        | |t!        |dz               }i }t!        d|dz         D ]  }| j#                  ||         ||<    |
| _         | j%                  d|z        }|dk(  r|d   ||d   z  z   }|dk(  r|d    d|d   z  z  z
  }|d   ||z  z   }|dk(  r7d|d   z  z  d|d   z  |dz  z  z   |d   z   d|d   z  z  z   }|d   ||z  z   }|dk(  rcd|d   z  dz  z  d|d   z  |dz  z  z
  d|d   z  |z  z
  d|d   z  z  z
  }|d|d   z  |z  |z  z
  |d   z
  d|d   z  z  z   }|d   ||z  z   }|dk(  rd|d   z  dz  z  d|d   z  |dz  z  z   d|d   z  |dz  z  z   }|d|d   z  |z  z  z   d|d   z  |dz  z  |z  z   }|d|d   z  |z  z   d|d   z  |dz  z  z
  d|d   z  |z  z   d|d   z  z  z
  }|d|d   z  |z  |z  z
  |d   z   d|d   z  z  z
  }|d   ||z  z   }|| _         S )z?
    zeta_half(s,k=0) Computes zeta^(k)(s) when Re s = 0.5
    5   r   r   r   rr   r   r   r   (\ @3333335@?皙@皙?r@  r}   rA  r   rB  rE  rD                       H@ru   )r!   r   r   r(   r   r#   r   logr   r   rF  r'   r%   rG  rX   r>  r$   r   r   )r   r   r;   r   r  r   XM1abstr  wpbasicwpbasic2rI  wpRrK  rL  rM  rN  rO  r  r  r   rP  zvzv1s                            r	   	zeta_halfrh    s6    IGGAJE
ACHqyHHSVsvvXq!C!Hs5y$99qysxx1SVV8%%UQYs1u:D	4A!AcggajL!Gbb*3r6!8A:566y@BH'8$G!Qswws2vax((2145G
CGGC!G
Y
&q
(CCHOOAceeU3775>%9::;E1uSWWSWWQqs^,a/#&&.2BBc1ucggcgga!n-.q0c1ucggcgga!n-.q0c1uSWWSWWQqs^,b0cCH
C%!*
%C
CQqs| &88CH%C&CHxx5!H!tVHSVO#!t1vg#a&$Vhsl"!tAhsl1SV8S!V,,SV3Bs1vIcMAVHSL !t#a&ja#a&a/#a&<RAYs]JCAJsN3&&s1v-aAhsl:VHSL AvQiQ3q6	#q& 00CF361AA3s1v:c>#%%c#a&j#q&&9#&==#c!f*S. CF36!11!CF(3,>qQx|K"SV)C-##CF*2c!f9S=8VHSL CHIr   c                 x
   | j                   }| j                  |      }| j                  |      }d| _         |dkD  r| j                  t	        |      d      }nD| j                  d| j
                  z  |dz
        | j                  t	        d|z
        d|z
        z  }|dkD  r%d| j                  |d| j
                  z  z        z  }nd|z  |z  }d|z
  dkD  r%d| j                  |d| j
                  z  z        z  }nEd|z  | j                  d| j
                  z  |       z  | j                  t	        |      |dz
        z  }t	        d|z
        }	d|	z  t        j                  |	      z  }
t        dd| j                  |      z         }d| j                  d	|z  d
|z  |z  z   d|z  |z  |
z  z         z   |z   dz   }t        ||      }t        dd| j                  d|z  |z        z   |z   dz         }d| j                  dd|z  z         z   |z   dz   }|| _         | j                  || j                  || j                  d      z
  z  z
        }|}| j                  d|z
        }|| _         t        | ||      \  }}|dkD  rP| j!                  d|dz        | j!                  dd|z
  dz        z   dz  | j#                  | j
                        dz  z
  }|dkD  r>| j                  | j!                  d|dz        | j!                  dd|z
  dz        z
  z  dz  }|dkD  r2| j!                  d|dz        | j!                  dd|z
  dz        z    dz  }|dkD  r?| j                   | j!                  d|dz        | j!                  dd|z
  dz        z
  z  dz  }|| _         | j%                  d|z        }|dk(  r|d   ||d   z  z   }|dk(  r|d    d|d   z  z  z
  }|d   ||z  z   }|dk(  r7d|d   z  z  d|d   z  |dz  z  z   |d   z   d|d   z  z  z   }|d   ||z  z   }|dk(  rcd|d   z  dz  z  d|d   z  |dz  z  z
  d|d   z  |z  z
  d|d   z  z  z
  }|d|d   z  |z  |z  z
  |d   z
  d|d   z  z  z   }|d   ||z  z   }|dk(  rd|d   z  dz  z  d|d   z  |dz  z  z   d|d   z  |dz  z  z   }|d|d   z  |z  z  z   d|d   z  |dz  z  |z  z   }|d|d   z  |z  z   d|d   z  |dz  z  z
  d|d   z  |z  z   d|d   z  z  z
  }|d|d   z  |z  |z  z
  |d   z   d|d   z  z  z
  }|d   ||z  z   }|| _         S )z+
    Computes zeta^(k)(s) off the line
    rU  r   rr   r   r   r   r   r   rV  rW  rX  rY  rZ  r@  r}   rA  r\  r   rB  r[  rE  rD  r]  r^  ru   )r!   r   r   rg   r   r#   r(   r   r_  r   r   rF  r'   r%   r   r  rG  rX   r   )r   r   r;   r   r  r   r`  ra  M2rb  r  rc  rd  rI  re  rK  s1s2r  r  rL  rM  rN  rO  rP  rf  rg  s                              r	   zeta_offlinerm    s    IGGAJE
ACHqyIIc!fc"IIaha(3qs8CI)FF	sxx1SVV8%%UQY	%!sxx1SVV8%%qS1SVV8eV,,SYYs1veCi-HHs1u:D	4A!AcggajL!Gbb*3r6!8A:566y@BH'8$G!Qswws2vax((2145G
CGGC!G
Y
&q
(CCHOOAceeU3775>%9::;E	
B	!B$BCH31%HC1uSWWQr!t_SWWQ"ax%88!;cffSVVnQ>NNc1uCEE3771RT?3771adAX+>>?Ac1ucgga1ocgga2q&99:2=c1uSUUFCGGAbdOCGGAqtQh,??@CcCHxx5!HAvVHSVO#Av1vgaAhsl"VHSL AvAhsl1SV8S!V,,c!f4RAYs]BVHSL Av#a&ja3q6#q&03q6#=bQimKCAJsN3&&s1v-aAhsl:VHSL AvQiQ3q6	#q& 00CF361AA3s1v:c>#%%c#a&j#q&&9#&==#c!f*S. CF36!11!CF(3,>qQx|K"SV)C-##CF*2c!f9S=8VHSL CHIr   c           
         | j                  d      | j                  |z  z   }|}| j                  d|z
        }| j                  }d| _        | j	                  |      dk\  rNd| j                  | j                  |      d| j                  z  z        z  }| j                  t        |            }n_d| j                  z  | j	                  |      dz
  z  t        d|z
        d| j	                  |      z
  z  z  }d| j                  |      z  |z  }| j	                  |      dk\  r4d| j                  | j                  |      d| j                  z  z        z  }	n]d| j                  |      z  d| j                  z  | j	                  |      dz
  z  z  t        d|z
        d| j	                  |      z
  z  z  }	dt        | j                  |            z  }
| j                  |      }|||	z   z  }d|z   }t        d	d| j                  |
      z   | j                  |d
d|
z  z   z        |z         }t        d| j                  d|z        |z         }| j                  d|z        |z   }|| _        | j                  |      }|| _        t        | ||      \  }}dd|z  z   }dd|z  z
  }|dkD  rGd| j                  d|      | j                  d|      z   z  | j                  | j                        dz  z
  }|dkD  r(d| j                  d|      | j                  d|      z
  z  }|dkD  r(d| j                  d|      | j                  d|      z   z  }|dkD  r(d| j                  d|      | j                  d|      z
  z  }|| _        | j                  |      }|dk(  r||d   z  |d   |z  z   }| j                  }|dk(  r)||z  |d   |d   z  z   z  ||d   |d   |z  z   z  |z  z
  }|dk(  r[|d|d   z  z  |d   |dz  z  z
  |d   z
  ||d   z  z  z   z  }|d|d   z  |z  |d   |dz  z  z
  |d   z
  ||d   z  |z  z
  |z  z   }|dk(  rd|d   z  dz  z  |d   |dz  z  z
  d|d   z  |z  z
  |dz  |d   z  z  z   }|d|d   z  |z  |z  z   |d   z
  |d   z  z   |z  |z  }d|d   z  |dz  z  |d   |dz  z  z   d|d   z  |z  z   |dz  |d   z  |z  z   }||d|d   z  |z  |z  z   |d   z   |d   |z  z
  z  |z  }||z   }|dk(  rSd|d   z  dz  z  |d   |dz  z  z   d	|d   z  |dz  z  z   }|d|d   z  |z  z  z
  d|d   z  |dz  z  |z  z
  d|d   z  |z  z
  }|d|d   z  |z  |z  z
  d|d   z  |z  z   d|d   z  z  z
  d|d   z  |z  |z  z
  }||d   z   ||d   z  z  z   }d|d   z  |dz  z  |d   |dz  z  z   d	|d   z  |dz  z  z   }|d|d   z  |z  |z  z   d|d   z  |dz  z  |z  z   d|d   z  |z  z   }|d|d   z  |z  |z  z
  d|d   z  |z  z   d|d   z  |z  z
  d|d   z  |z  |z  z
  }||d   z   ||d   z  |z  z
  }||z  ||z  z   }|| _        S )z8
    Computes Z(w) and its derivatives off the line
    r@  r   #   r   r   rr   r   r   r      gRQ @g      ?y              ?y              ?g      y             r   r   rC  rD  rE  )r%   r'   r   r!   r   r(   r   r#   r   rF  r   r   r  rG  rX   r   )r   r4   r;   r   rk  rl  r   ra  r`  rj  r  r_   r`   rb   rc  rI  re  rK  r  r  ptaptbrL  rM  rN  rO  rP  rf  r'   rg  zv2s                                  r	   	z_offlinert    sK    	suuQwA	
B	!B$BICH 	qsxxQZ011HHSWsvvXQ'#ad)c#''"+o*FF_QqsxxQZ011_ah#''"+a-88QrTSQS_9UU	#cooa 
!!A 88A;DB<Di<D!Qswwqz\3774AaC=#9$#>?G!CGGDI&t+,G
''!D&/$
CCHOOAECH3q#HC
a-C
a-C1uD#''!C.378366#&&>!;KKc1uTCGGAcN3771S>9:c1uVcgganSWWQs^;<c1uVcgganSWWQs^;<cCHxxHAvc!f_SVH_,AAvxZQAs
*+As1vc!fSj/@,A(,JJAvr#a&y}SVCF]23q69!CF(3,FG"SV)C-AsAv-c!f4Qs1vXc\A8KKAvQiQs1vc1f},Qs1vXc\9!A#c!f*S.HBs1vIcM#%%c!f,SVCZ7:8CAhsAvoc!fS!Vm+Ac!fHSL81SVCGr#a&y}S((#a&0Q;<XEWAvAhsAvoc!fS!Vm+aAhsAvo=#c!f*S.$$RAYsAv%5c%99"SV)C-G!CF(3,s""1SV8C</#a&<Qs1vXc\#=MM#a&j3q6#%AhsAvoc!fS!Vm+aAhsAvo=#c!f*S.$$RAYsAv%5c%99"SV)C-G!CF(3,s""1SV8C</#a&<Qs1vXc\#=MM#a&j3q6#%c\#h,&CHIr   c                 .   |dkD  rt         | j                  |      }| j                  |      }| j                  |      }|dk  r2| j	                  | j                  | j	                  |      |            }|S |dk(  }|rt        | ||      S t        | ||      S )Nr   r   rr   )r   rH   r   r   r   rs_zetarh  rm  )r   r   
derivativekwargsreimrQ  critical_lines           r	   rv  rv  b  s    A~!!AA	B#''!*R	AvHHS[[!j9:3YMa,,CJ//r   c                     | j                  |      }| j                  |      }| j                  |      }|dk  rt        | | |      S |dk(  }|rt	        | ||      S t        | ||      S )Nr   )rH   r   r   rs_zrS  rt  )r   r4   rw  ry  rz  r{  s         r	   r}  r}  q  sj    AA	B#''!*R	AvC!Z((1WMc1j))a,,r   )r   )__doc__r   objectr   	functionsr   rC   rU   rd   rl   r  r>  rS  rh  rm  rt  rv  r}  r   r   r	   <module>r     s   0d (f ( *t'l.6	DL $%# qh&P<|@DFP 0 0 	- 	-r   