
    gh                         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dS )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dS )RSCachec                     ddi i g| _         d S )Nr   
   )	_rs_cache)ctxs    S/var/www/html/ai-engine/env/lib/python3.11/site-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                 &   |dz   }|dz  }t          |                     d|dz   z            d|z  dz   |                     |          z
            }|                     d|z            }t          |                     d|z            |                     |          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 ]_}	d
|	z  |                     d|	z            z  }|                     |          |                     d|	z            z  }||d|	z           z  |
|	<   `t          dd|z  d	z             D ]5}	| j        |                     |	          z  }|d|	z  z  }|||	         z  ||	<   6d| _        d|                     |          z
  }i }t          d|d	z             D ]}	d| _        t          |                     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 ]}	d| _        t          |                     d|	dz   z            d|	z  |z             }|| _        d}t          d|	d	z             D ]'}|| j	        |	|z
  z  |
|         z  ||	|z
           z  z  }(|||	<   d| _        d|                     |          z
  }t          dd|z  |z             }|| _        | 
                    |                     d                    dz  }|                     d          dz  }i }t          d|          D ]C}	d| _        t          dd|	z  |z             }|| _        |||	         z  |||	         z  z   |d|	z  <   Dt          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77DCHGGAJGAJ1QtVAX ) )QqS\#&(

 AvCHAA1T!V__  1Ws}}QqS)))WWR[[1%!_!1QtVAX  WSWWQZZq!t9
]! CH   E	B1T!V__ ' '3772qs8$$QqSY//q1 	0 	0Ab1W!$Qqs1Q3wZ//DDac{CE!$&1	B1T!V__  3772qs8$$QqSY//q1 	1 	1ASUQqS\QqT)!AaC&00DD1 CHswwwD
a$t

CCH	#''#,,			!B	D		!	BA1T]] # #!AaCHooBqE"RU("!A#1QtVA  !'1g&&r   c                      j         }||d         k    r||d         k    r|d         |d         fS  j        j        }	 t           j        ||          }| j        _        n# | j        _        w xY w  j        urlt	           fd|d                                         D                       |d<   t	           fd|d                                         D                       |d<   | j         d d <    j         d          j         d         fS )Nr   r   r   r   c              3   L   K   | ]\  }}|                     |          fV  d S Nconvert.0r;   r3   r   s      r	   	<genexpr>zcoef.<locals>.<genexpr>   6      GGeq#++a..)GGGGGGr   c              3   L   K   | ]\  }}|                     |          fV  d S rF   rG   rI   s      r	   rK   zcoef.<locals>.<genexpr>   rL   r   )r   _mpr!   rC   dictitems)r   r*   r+   _cacheorigdatas   `     r	   coefrT      s   ]FF1I~~#**ay&)##7<DSWa%%t
#'GGGGtAw}}GGGGGQGGGGtAw}}GGGGGQCM!!!=S]1---s   A! !A/c                    d|z  |z  }|                      |          }d|                      | j                  z  |                      |          z   |                      |          z   dz  |                      d| j        z            dz  z
  }d|z  dz
  }|                     |dz             |                     |dz  dz             z
  dz  |                     |dz   dz            z
  }	|||z  |	z   k     rp|dk    rj|dz
  }|                     |dz             |                     |dz  dz             z
  dz  |                     |dz   dz            z
  }	|||z  |	z   k     r|dk    j|}
|
S )Ngbk5_@r   r   r         @r   )lnr#   loggamma)r   xAxeps4axB1xLaux1aux2maux3xMs              r	   aux_M_Fprc      sh    r>%D66$<<DcffSVnnSVVC[[(2A5svvah7G7G7IID	"QA<<!S\\!C%'222A
5s||QqS"H7M7M
MD!D&$,AaCCEQqS!!#,,quQw"7"77:CLL!A#r<R<RR !D&$,AaCC 
BIr   c                     |d|z  z  }||z  dz  }||                      ||dz  z  |dz
  dz            z  |z  }t          ||          }|S )Nx  gJR_@r   r   r   )powermin)	r   rY   rZ   r[   r\   rb   h1h2h3s	            r	   aux_J_neededrk      s_    
 
BB	Q&	&B	ciiBEBqD!8,,	,r	1B	RBIr   c                 "=     j         }                     |          }                     |          }d|z
  }d _                              |d j        z  z            }||z  }||z  }	                     d                     |          dz
            }
                     d                     |	          dz
            }                     d|           }|dz  }||
z  dz  }||z  dz  }d _         |dk    r2d}t          j        d|          d	z  }t          j        d|          }d}n3d
}t          j        d|           d	z  }t          j        d|           }d}|dk    r2d}t          j        d|          d	z  }t          j        d|          }d}n3d
}t          j        d|           d	z  }t          j        d|           }d}d _         d}d|z   	                    |dz            z                       ||z  |           z  |k    rB|dz   }d|z   	                    |dz            z                       ||z  |           z  |k    Bt          d|          }d}d|z   	                    |dz            z                       ||z  |           z  |k    rB|dz   }d|z   	                    |dz            z                       ||z  |           z  |k    Bt          d|          }d|z  d|z  |z  dz  k    s\d|z  dz   |z   dk     sMt          |          |dz  k    s7d|z  d|z  |z  dz  k    s%d|z  dz   |z   dk     st          |          |dz  k    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   	                    |$dz             z  }%|%|"k    r|$dz   }$d j        z  |%z  |$z  }%|%|"k    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          |*|+          }, 	                    |)dz              	                    |)dz  dz             z  }-t          j        |-          }-|,|-z  t          ||          z  |&|)<   t          d|z  dz
  d          dz   }.d|$z  }/                     d|$z            }0t!          d|.          D ]G})t          |0                     |/ 	                    |)dz             z  |&|)         z                      }0H|0                     |          z   dz    _                              |d j        z  z            }                     |          }1dd||1z
  z  z
  }2                     |2                     d          |0z  z            }3|2                     d          |0z  z  |3z
  }4|4dk     r|3}3n|3dz   }3                     |3                     d          |0 z  z            }2                                          d j        z            |$           	                    |$dz             dz  |$z  z  }5i }6i }7t)           |$|5          \  }7}8|7                                }6i }9t!          |!d|z  dz
            D ]}:d|9|:<   i }9|0 _         t!          d|!dz             D ]d})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|<<   ei }=t          d                     d|z  |z                      }>d                     dt          |          z   |z            z                        |          z
  dz
  }?                     d j         j        z  |z  |z  |z  |z  z            dz  }@t!          d|          D ]o}:                                           	                    |:dz
                                                     |:|@z            z
  |?z   }At          |A|>          |=|:<   p|=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 ]R}:|=|:         dz    _         t!          dd|:z  dz  dz             D ]}<d|:z  d|<z  z
  })|)dk    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<   sd|Cd|:|<f<   t!          d|<          D ]w}H|Cd|:|Hf                              d'                               d|<z  d|Hz  z
            z                       |<|Hz
            z  z  }I|Cd|:|<fxx         d|<|Hz
  z  |Iz  z  cc<   xd|Cd|:d(f<   d|Cd|:df<   d|Cd|:d|:z  dz  dz   f<   Tt!          d(|dz             D ]e}Jt!          d(|          D ]R}:t!          d)t          dd|:z  dz  dz                       D ](}<|Jdk     s|:dk     s|<dk     s|<d|:z  dz  k    rd|C|J|:|<f<   )Sft!          d|dz             D ]}Jt!          d|          D ]}:|=|:         dz    _         t!          dd|:z  dz  dz             D ]]}<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<   ^i }Kt          d                     d|z  |z                      }>d                     dt          |          z   |z            z                        |          z
  dz
  }L                     d j         j        z  |z  |z  |z  |z  z            dz  }Mt!          d|          D ]o}:                                           	                    |:dz
                                                     |:|Mz            z
  |Lz   }Nt          |N|>          |K|:<   p|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 ]R}:|K|:         dz    _         t!          dd|:z  dz  dz             D ]}<d|:z  d|<z  z
  })|)dk    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<   sd|Pd|:|<f<   t!          d|<          D ]w}H|Pd|:|Hf                              d'                               d|<z  d|Hz  z
            z                       |<|Hz
            z  z  }I|Pd|:|<fxx         d|<|Hz
  z  |Iz  z  cc<   xd|Pd|:d(f<   d|Pd|:df<   d|Pd|:d|:z  dz  dz   f<   Tt!          d(|dz             D ]e}Jt!          d(|          D ]R}:t!          d)t          dd|:z  dz  dz                       D ](}<|Jdk     s|:dk     s|<dk     s|<d|:z  dz  k    rd|P|J|:|<f<   )Sft!          d|dz             D ]}Jt!          d|          D ]}:|K|:         dz    _         t!          dd|:z  dz  dz             D ]]}<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<   ^i }Qi }Rd _                              d|dz   z            }E                     d*|dz   z  |z            }S                     ||z  t          j         j                  z            dz
  }Tt!          d|          D ]}<|S|<|Tz  z
                                            |<dz                       dz  z   }Ut          |E|U                     |          z
  dz             dz   dz   d+z  |Q|<<   t          |E                     |dz             |Uz                        |          z
  dz             dz   dz   |R|<<   i }Vi }Wd _                              d|dz   z            }E                     d*|dz   z  |z            }X                     ||z  t          j         j                  z            dz
  }Yt!          d|          D ]}<|X|<|Yz  z
                                            |<dz                       dz  z   }Zt          |E|Z                     |          z
  dz             dz   d+z  |V|<<   t          |E                     |dz             |Zz                        |          z
  dz             dz   dz   |W|<<   i }[t!          d|dz             D ]9}Jt!          d|          D ]&}<t!          d(d|<z  dz  dz             D ]
}\d|[|J|<|\f<   ':t!          d|dz             D ]}Jt!          d|          D ]|}<|Q|<          _         t!          dd|<z  dz  dz             D ]S}\|C|J|<|\f         |9d|<z  d|\z  z
           z  |8d|<z  |\z
           z  |[|J|<|\f<   |[|J|<|\f         d j        z  |\z  z  |[|J|<|\f<   T} fd,}]i }^t!          d|dz             D ]9}Jt!          d|          D ]&}<t!          d(d|<z  dz  dz             D ]
}\d|^|J|<|\f<   ':t          |Qd         |Vd                   dz    _          |]|          }_                     |_           }`t!          d|dz             D ]}at!          d|          D ]}<|Q|<          _         t!          dd|<z  dz  dz             D ]o}\d|^|a|<|\f<   t!          d|adz             D ]Q}J                     |a|J                               |`|J          z  |[|a|Jz
  |<|\f         z  }b|^|a|<|\fxx         |bz  cc<   Rpi }ct!          d|dz             D ]9}Jt!          d|          D ]&}<t!          d(d|<z  dz  dz             D ]
}\d|c|J|<|\f<   ':t!          d|dz             D ]}Jt!          d|          D ]|}<|V|<          _         t!          dd|<z  dz  dz             D ]S}\|P|J|<|\f         |9d|<z  d|\z  z
           z  |8d|<z  |\z
           z  |c|J|<|\f<   |c|J|<|\f         d j        z  |\z  z  |c|J|<|\f<   T}i }dt!          d|dz             D ]9}at!          d|          D ]&}<t!          d(d|<z  dz  dz             D ]
}\d|d|a|<|\f<   ':t!          d|dz             D ]}at!          d|          D ]}<|V|<          _         t!          dd|<z  dz  dz             D ]o}\d|d|a|<|\f<   t!          d|adz             D ]Q}J                     |a|J                               |`|J          z  |c|a|Jz
  |<|\f         z  }b|d|a|<|\fxx         |bz  cc<   Rpt          |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 ]X}at!          d|          D ]E}<|Q|<          _         t!          dd|<z  dz  dz             D ]}\|^|a|<|\f         |e|<         z  |f|a|<|\f<   FYi }gt!          d|dz             D ]X}at!          d|          D ]E}<|V|<          _         t!          dd|<z  dz  dz             D ]}\|d|a|<|\f         |e|<         z  |g|a|<|\f<   FYi }ht!          d|dz             D ]U}at!          d|          D ]B}:|R|:          _         d}it!          dd|:z  dz  dz             D ]}<|i|f|a|:|<f         z  }i|i|h|a|:f<   CVi }jt!          d|dz             D ]U}at!          d|          D ]B}:|W|:          _         d}it!          dd|:z  dz  dz             D ]}<|i|g|a|:|<f         z  }i|i|j|a|:f<   CVi }kd _         t          j         j                  |z  ||z  z  }ld _                              d-|dz   dz  z  |lz  |z            }mt          |m                     d|dz   z                      }m|m _         t!          d|dz             D ]8}ad|k|a<   t!          d|dz             D ]}<|k|axx         |h|a||<z
  f         z  cc<   9i }nd _         t          j         j                  |z  ||z  z  }od _                              d-|dz   dz  z  |oz  |z            }pt          |p                     d|dz   z                      }p|p _         t!          d|dz             D ]8}ad|n|a<   t!          d|dz             D ]}<|n|axx         |j|a||<z
  f         z  cc<   9d _         dt                               t          |kd                                                  t          |nd                                       z  }q|d|qz  z  }r|                     |d j        z  z            z  }sd.                     dd|rz                       ||           z  z   |sz            z   }td.                     dd|rz                       ||           z  z   |sz            z   }ut          |t|u           _         |d j        z  z  }v|dz                       |v          z  |dz  z
   j        dz  z
  }w                     |w           }x |]|          }                     ||           }                     ||           }	d|1dz
  z  |z  |xz  }yd|1dz
  z  |	z  |xz  }zd _         d                     |1                     |1d|z
            z                        |1          z  |z            z   }{d                     |1                     |1d|z
            z                        |1          z  |z            z   }|t          |{||          }}|}dz    _         	                      |dt;          |1          dz
  t!          d|dz             d/          \  }~}d _         t          |~|                   }t          |k|         |yz            }t          d|                     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|                     dd|z  d0|z  z   z            z             }| _         i }t!          d|dz             D ]7}a||a         |n|a         |zz  z   ||a<                        ||a                   ||a<   8| _         ||fS )1Nr   r   r         @rV   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                 x    j         }|dz   _                             | dj        z  z            }|_         |S Nr   r!   r(   r#   twpaar   s      r	   trunc_azRzeta_simul.<locals>.trunc_a0  <    X6XXa36l##	r   皙@r   T   )r!   _im_rer(   r#   rf   r   mathpowgammar   absNotImplementedErrorrc   rk   rg   r$   floorr%   rH   rT   copyrW   r"   r&   r'   binomialexpj_zetasumintconj)r   sder	wpinitialr   xsigmaysigmar[   xasigmayasigmaxA1yA1r+   eps1xeps2yeps2xbxcrY   r\   ybycyAyB1r]   yLLxeps3yeps3rZ   yeps4rb   yMMrj   h4r*   jvalueeps5xforeps5yforeps5r`   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     sB#   I 	

AWWQZZFZF CHAcfHA6kG6kG 			!SWWW%%a'((C		!SWWW%%a'((C ))A	z
"
"Cr6D#IbLE#IbLE CHzzXa'XaXa  (Xa  zzXa'XaXa  (Xa  
 CH	
B
B$syyC  
 399RT2##6#6
6%
?
?T B$syyC  
 399RT2##6#6
6%
?
?	QrB	
B
B$syyC  
 399RT2##6#6
6%
?
?T B$syyC  
 399RT2##6#6
6%
?
?	QrB 
21Qs		"QvaS[[1R45G5G	
21Qs		"QvaS[[1R45G5G!"VWWW 	BA AbD\EAbD\E
 1R4LE1R4LE 
#r5!S"	-	-B	#r5!S"	-	-BBA 
c2uab	1	1B	c2uab	1	1B	RB
Ah]SYYqs^^+F
2++aCCF(F"1$ 2++ 
Dwtws"1$Hwtws"1$H1R[[ / /1Q3''b11Q3''b15%  yy1~~cii#c	222y9Su---Q 1Q^^AF
q&C772a4==D1V__ > >4SYYqs^^!3DG!;<<== cggajj #CHAcfHA		!A	!QqS'	A
 			!SWWS\\4'())CcggcllD()#-JS!eC3773<<4%0122A 99S[[36**A..		!A#q0@0BCD 
BD#q$''ND(yy{{B	B1ac!e__  1	BCH1QqS\\ # #qs1uQwr"%% 	% 	%A1Hr!u$DD1q1Qq!! 	# 	#AqS2ac7NBqEE	# 
D	Qswwr!tAv		B
SWWaFmR'((
(
7
9CVVAsvcf}Qq(,S0122A5F1QZZ  ggchhsyy3//0011#))AfH2E2EEcICQ AwrzCH6lG	BBvJQ"V*!5	qRYBwKq2g;Q"V*16
1QZZ 7 772:q1a"" 	3 	3A!AaCA!ttWQYqDBJ>qS6R!A#ac	]*2b1Q3qk>9"R!A#ac	]:JJ1Qq5		1Qq5	q 3 3A1Qq5	3775>>#''!A#ac'2B2B#B3771Q3<<#OPCq1uIII21+s!22IIII3 1Qr6
b1RjQBq1Q36!8|$4$4Bs1uoo # #r! 	# 	#A2c!AaCF1Hoo.. # #TTaccacca!Qhh!"Br!AvJ#	# Ac!enn 4 4q 	4 	4AAwrzCH1QqS!VAX&& 4 4rT!VR1QqS1--a!nR1QqS1=M.MM 2bd1Q3qsl#332a6

4	4 
D	Qswwr!tAv		B
SWWaFmR'((
(
7
9CVVAsvcf}Qq(,S0122A5F1QZZ  ggchhsyy3//0011#))AfH2E2EEcICQ AwrzCH6lG	BBvJQ"V*!5	qRYBwKq2g;Q"V*16
1QZZ 7 772:q1a"" 	3 	3A!AaCA!ttWQYqDBJ>qS6R!A#ac	]*2b1Q3qk>9"R!A#ac	]:JJ1Qq5		1Qq5	q 3 3A1Qq5	3775>>#''!A#ac'2B2B#B3771Q3<<#OPCq1uIII21+s!22IIII3 1Qr6
b1RjQBq1Q36!8|$4$4Bs1uoo # #r! 	# 	#A2c!AaCF1Hoo.. # #TTaccacca!Qhh!"Br!AvJ#	# Ac!enn 4 4q 	4 	4AAwrzCH1QqS!VAX&& 4 4rT!VR1QqS1--a!nR1QqS1=M.MM 2bd1Q3qsl#332a6

4	4 HGCH	QqS		B
''"ac(2+

C
''#a%	#&)))
*
*1
,C1QZZ G GAcEk#''#''!C%..11"442c#''%..0233A5r93>"SWWQqS\\#-cggenn<Q>??A2E

HGCH	QqS		B
''"ac(2+

C
''#a%	#&)))
*
*1
,C1QZZ F FAcEk#''#''!C%..11"44Bs3775>>1!344b8#="SWWQqS\\#-cggenn<Q>??A2E

 IAc!enn & &q 	& 	&AR!Qq)) & &$%	"Qs(##&	& Ac!enn I Iq 	I 	IA{CHQqsAvax(( I I$&r!CxLAaC#I$>x!C?P$P	"Qs(#$-b3h$7!CE'C$H	"Qs(##I	I     FAc!enn # #q 	# 	#AR!Qq)) # #!"r!Cx  #	# 8A;x{++A-CH

B
&&**BQs1u~~ 2 2q 	2 	2A{CHQqsAvax(( 2 2#$s1Sy!3q5// 2 2B \\#b11#))Br2B2BB9SQSVTUVY\CZZH3q9%%%1%%%%22	2 IAc!enn & &q 	& 	&AR!Qq)) & &$%	"Qs(##&	& Ac!enn I Iq 	I 	IA{CHQqsAvax(( I I$&r!CxLAaC#I$>x!C?P$P	"Qs(#$-b3h$7!CE'C$H	"Qs(##I	I FQs1u~~ $ $q 	$ 	$AR!Qq)) $ $"#s1Sy!!$	$ Qs1u~~ 2 2q 	2 	2A{CHQqsAvax(( 2 2#$s1Sy!3q5// 2 2B \\#b11#))Br2B2BB9SQSVTUVY\CZZH3q9%%%1%%%%22	2 8A;,,Q.CH	BBqEqE!GBqE8A;x{++CH1QZZ    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%LL	 EQs1u~~  q 	 	AqzCHB1ac1fQh'' # #c#a'l"E#a%LL	 FCHy  2%1-HCHwwsQqS1H~h.677H8SWWR1X..//HCHQs1u~~ * *sq1 	* 	*A3KKK5QqS>)KKKK	*FCHy  2%1-HCHwwsQqS1H~h.677H8SWWR1X..//HCHQs1u~~ * *sq1 	* 	*A3KKK5QqS>)KKKK	*
 CH	
SVAY((#''#fQi..*A*ABB	CB":D	366!QsvX,A!QtVSYYq&%9%9991<===E!QtVSYYq&%9%9991<===E5%  CH
QsvX,CQ3s
QqS
!#&(
*C#A

AiiF7##GiiF7##G!A#;'
!A
%C!A#;'
!A
%C CH!CIIa&111366!99<dBCCCF!CIIa&111366!99<dBCCCFEbyCH$ ||Aq#a&&(E!CENNDA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        }                     |          }                     |          }d _                             |d j        z  z            }                     ||          }                     d                     |          dz
            }	                     d|           }
|
dz  }|
|	z  dz  }d _        |dk    r2d}t          j	        d|          d	z  }t          j	        d|          }d}n3d
}t          j	        d|           d	z  }t          j	        d|           }d}d _        d}d|z   
                    |dz            z                       ||z  |           z  |k    rB|dz   }d|z   
                    |dz            z                       ||z  |           z  |k    Bt          d|          }d|z  d|z  |z  dz  k    s%d|z  dz   |z   dk     st          |          |dz  k    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                       d          z  t          j        z  t          j        z  }|                     ||dz  z  |dz
  dz            z  |z  }t!          ||          }d}d j        z  |z   
                    |dz             z  }||k    r|dz   }d j        z  |z  |z  }||k    i }t          j        t          j        z  |z  |z  }t          dd          D ]s}t          j	        ||dz            d|z  z  } 
                    |dz              
                    |dz  dz             z  } t          j        |           } || z  |z  ||<   tt!          d|z  dz
  d          dz   }!d|z  }"                     d|z            }#t          d|!          D ]G}t          |#                     |" 
                    |dz             z  ||         z                      }#H|#                     |          z   dz    _                             |d j        z  z            }                     |          }$dd||$z
  z  z
  }%                     |%                     d          |#z  z            }&|%                     d          |#z  z  |&z
  }'|'dk     r|&}&n|&dz   }&                     |&                     d          |# z  z            }%                     d j        z  |           
                    |dz             dz  |z  z  }(i })i }*t)           ||(          \  }*}+|*                                })i }t          |d|z  dz
            D ]}d||<   |# _        t          d|dz             D ]d}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  |)|-<   ei }.t          d                     d|z  |z                      }/d                     dt          |          z   |z            z                        |          z
  dz
  }0                     d j         j        z  |z  |z  |z  |z  z            dz  }1t          d|          D ]o}                                           
                    |dz
                                                     ||1z            z
  |0z   }2t          |2|/          |.|<   p|.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 ]B}|.|         dz    _        t          dd|z  dz  dz             D ]}-d|z  d|-z  z
  }|dk    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<   rd|4d||-f<   t          d|-          D ]i}9|4d||9f          j                             d|-z  d|9z  z
            z                       |-|9z
            z  z  }:|4d||-fxx         d|-|9z
  z  |:z  z  cc<   jd|4d|d'f<   d|4d|df<   d|4d|d|z  dz  dz   f<   Dt          d'|dz             D ]e};t          d'|          D ]R}t          d(t          dd|z  dz  dz                       D ](}-|;dk     s|dk     s|-dk     s|-d|z  dz  k    rd|4|;||-f<   )Sft          d|dz             D ]};t          d|          D ]}|.|         dz    _        t          dd|z  dz  dz             D ]]}-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<   ^i }<i }=d _                             d|dz   z            }6                     d)|dz   z  |z            }7                     ||z  t          j         j                  z            dz
  }>t          d|          D ]}-|7|-|>z  z
                                            |-dz                       dz  z   }8t          |6|8                     |          z
  dz             dz   dz   |<|-<   t          |6                     |dz             |8z                        |          z
  dz             dz   dz   |=|-<   i }?|D ]9};t          d|          D ]&}-t          d'd|-z  dz  dz             D ]
}@d|?|;|-|@f<   ':|D ]};t          d|          D ]|}-|<|-          _        t          dd|-z  dz  dz             D ]S}@|4|;|-|@f         |d|-z  d|@z  z
           z  |+d|-z  |@z
           z  |?|;|-|@f<   |?|;|-|@f         d j        z  |@z  z  |?|;|-|@f<   T} fd*}Ai }B|D ]9}Ct          d|          D ]&}-t          d'd|-z  dz  dz             D ]
}@d|B|C|-|@f<   ':|<d         dz    _         |A|          }D                     |D           }E|D ]}Ct          d|          D ]}-|<|-          _        t          dd|-z  dz  dz             D ]^}@d|B|C|-|@f<   t          d|Cdz             D ]@};                     |C|;          |E|;z  z  |?|C|;z
  |-|@f         z  }F|B|C|-|@fxx         |Fz  cc<   A_|<d         dz    _        i }Gd|Gd<   |Gd         |z  |Gd<   |<d          _        t          d|          D ]}-|G|-dz
           |Gd         z  |G|-<   i }H|D ]X}Ct          d|          D ]E}-|<|-          _        t          dd|-z  dz  dz             D ]}@|B|C|-|@f         |G|-         z  |H|C|-|@f<   FYi }I|D ]U}Ct          d|          D ]B}|=|          _        d}Jt          dd|z  dz  dz             D ]}-|J|H|C||-f         z  }J|J|I|C|f<   CVi }Kd _        t          j         j                  |z  ||z  z  }Ld _                             d+|dz   dz  z  |Lz  |z            }Mt          |M                     d|dz   z                      }M|M _        |D ]8}Cd|K|C<   t          d|dz             D ]}-|K|Cxx         |I|C||-z
  f         z  cc<   9d _        d                     |Kd                   z  }N|
d|Nz  z  }O|                     |d j        z  z            z  }Pd,                     dd|Oz                       ||           z  z   |Pz            z   }Q|Q _        |d j        z  z  }R|dz                       |R          z  |dz  z
   j        dz  z
  }S                     |S           }T |A|          }                     ||           }d|$dz
  z  |z  |Tz  }Ud _        d                     |$                     |$d|z
            z                        |$          z  |z            z   }V|Vdz    _        	                      |dt;          |$          dz
  |          d         }Wd _        t          |W|                   }Xt          |K|         |Uz            }Yt          d|                     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   rm   rV   r   r   r   rn   ro   rp   r   rq   rr   rs   r   re   rt   ru   rv   rw   rx   ry   rz   r   r   r   r{   r|   r   r}   r   r   r   r   r   r   r   r~   r   r   c                 x    j         }|dz   _                             | 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#   rf   r   r   r   r   r   r   rc   r$   erg   r   r%   rH   rT   r   rW   r"   r&   r'   r   r   r   r   )\r   r   derivativesr   r   r   sigmar[   asigmaA1r+   r   eps2brB   AB1r   eps3eps4r   r   r2   rh   ri   rj   r*   r   r   foreps5r`   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=    s5   $ k

C I

AGGAJJECHAcfHAYYq%  F	1cggfooa'	(	(B
))A	z
"
"Cr6D8B;D CHqyyHQug%HQuHQvw&HQv CH	A
A#cii#
1Q3r!2!2
2d
:
:aC A#cii#
1Q3r!2!2
2d
:
:AaA 
1!Ac			qs1uU{1}}#e**ad2B2B!"VW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CF(F"1$ 2++ 
Dgdgob "G1R[[ ! !x1%%tAv.yy1~~cii#c	222yt)D.Q 1Q^^AF
q&C772a4==D1f > >4SYYqs^^!3DG!;<<== cggajj 2%CHAcfHA		!A	!QqS'	A ))Aswwqzz4'(
)
)Ccggajj$&'+JC!eC3771::./00A 99QsvXq!!399QqS>>!#3A#56D 
B	D#q$''ND(	B	B1ac!e__  1CH1QqS\\ $ $qs1uQwr"%% 	& 	&A1H1%DD1q!A#a%'"" 	$ 	$AqSBqsGOBqEE	$ C	Q1Q	 	 B	CGGQs5zz\1$%%	%cggdmm	3A	5BFF1cfSVmAoa'*2-.//2E1QZZ  WWSXXcii#..//001U71C1CCBFRA 1vbyCH%[F
AAfI16qah1!E(AgJQ!G*!&	qQvY1QZZ 4 4q6"9q1a"" 	2 	2A!AaCA1WQYTRi]sVa!A#ac	l?2a!A#aj=8Aa!AaCiLH!Aa%!Aa%q 2 2AAaE(CGCGGAaC!G,<,<$<SWWQqS\\$IJCa!eHHH"!c 11HHHH2 !Ab&	qQq2vY!!Aa!QqL//Bs1uoo " "r! 	" 	"A2c!AaCF1Hoo.. " "TTaccacca!Qhh !Ab1fI"	"
 Ac!enn 2 2q 	2 	2A1vbyCH1QqS!VAX&& 2 2rT!VQr!tAaC!|_,Qa	]1RT!A#ac\?-JJ!BqD1QqSL/1"Qq&		2	2 GFCH	QqS		B	QqS!		B	Adi'''	(	(	*B1QZZ B B!B$Yswwswwqu~~..r11Bswwt}},Q.//125
3771Q3<<?3774==8:;;A=rAq		
 H % %q 	% 	%AR!Qq)) % %#$Ac""%	%  G Gq 	G 	GAqzCHQqsAvax(( G G#$R#X;r!A#ae)}#<Xac#g=N#NAc"#+BqH#5#%#~#FAc""G	G     E # #q 	# 	#AR!Qq)) # #!"c!Ci  #	# qz!|CH	B
&&**B 1 1q 	1 	1AqzCHQqsAvax(( 1 1#$c!Ci 3q5// 1 1B"||C33b"f< R#. /H#a)$$$0$$$$11	1 qzA~CH 
BBqEqE!GBqEqzCH1QZZ    1Q3"Q%1 
B 8 8q 	8 	8AqzCHQqsAvax(( 8 8 %c!Ci 0"Q% 73q98	8 D  q 	 	AayCHB1ac1fQh'' " "bQqk!DQKK	 ECHi!#ac*GCHggcAaC!8nW,t344G'3772qs8,,--GCH ( (c
q1 	( 	(A#JJJ$s1Q3w-'JJJJ	(
 CH	
SWWU1X	B2;D	CFF1ah<   Asww1T6399Qv#6#6669:::DCH
QsvX,CQ3s
QqS
!#&(
*C#A

AYYq5&!!F1+	!	#B CH399Qqw///:4?@@@ErzCH 
aCFF1Hk	2	21	5B CH3LLEc
R  E9swwq!E'!E'/':;;;<<ECH	B ( (S'%*R-'3CHIr   c                    |                      d          | j        |z  z   }| j        }d| _        |d| j        z  z  }|dz   |                     d|dz  z  |                     |          z            z   }|dz   |                     d|z  |                     |          z            z   }|| _        |                     |          }|| _        t          | |t          |dz                       }	|dk    rM| 	                    | 
                    d|dz            dz  |                     | j                  dz  z
            }
|dk    r7| 	                    | j        | 
                    d|dz            z  d	z            }|dk    r0| 	                    | 
                    d|dz             d
z            }|dk    r8| 	                    | j         | 
                    d|dz            z  dz            }|                     |          }|dk    rd|z  |	d         z  }|dk    rd|z  }||
|	d         z  |	d         z   z  }|dk    rCd|z  }| d|	d         z  |
z  |	d         |
dz  z  z   |	d         z   | j        |	d         z  |z  z
  z  }|dk    rod|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  }|| _        | 	                    |          S )z-
    z_half(t,der=0) Computes Z^(der)(t)
    0.5r   r   r   r   r   rt   r   r   r|                     @y                            @r                 (@              @)r%   r'   r!   r#   r   rW   siegelthetar=  r$   r   psir   )r   r   r   r   r   ttwpthetawpzthetar<  ps1ps2ps3ps4expthetazzfs                    r	   z_halfrR  r  s    
ggennSU1WAICH	
AcfHBlSWWQC[%;<<<G
a-#''"R%r

"233
3CCHOOAECH	3q%A,,	'	'B
Qwwcggcgga!nnQ.1AABB
QwwcggceCGGAacNN21455
Qwwcggswwq1~~oa/00
QwwcggsufSWWQqs^^3B677xxH
axxhJr!u
axx[BqE	"Q% 
axx\C2a5RU36\)"Q%/beC?@
axx\beGCFN2a5a<'#be3"RU(3,r"Q%x|C//15beCi?@
axx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=ceBqEk#oMqDCH771::r   c                 
   | j         }|                     |          }|                     |          }d| _         |dk    r#|                     t	          |                    }n)d| j        z  |dz
  z  t	          d|z
            d|z
  z  z  }|dk    r$d|                     |d| j        z  z            z  }nd|z  |z  }t	          d|z
            }d|z  t          j        |          z  }	t          dd| 	                    |          z             }
d| 	                    d	|z  d
|z  |z  z   d|z  |z  |	z  z             z   |z   dz   }t          |
|          }
t          dd| 	                    d|z  |z            z   |z   dz             }d| 	                    dd|z  z             z   |z   dz   }|| _         | 
                    || j        ||                     d          z
  z  z
            }|dk    rM|                     |                     d|dz                      dz  |                     | j                  dz  z
  }|dk    r0|                     |                     d|dz                       dz  }|dk    r0|                     |                     d|dz                       dz  }|dk    r/|                     |                     d|dz                      dz  }|| _         t          | |t!          |dz                       }i }t!          d|dz             D ] }|                     ||                   ||<   !|
| _         |                     d|z            }|dk    r|d         ||d         z  z   }|dk    r&|d          d|d         z  |z  z
  }|d         ||z  z   }|dk    rFd|d         z  |z  d|d         z  |dz  z  z   |d         z   d|d         z  |z  z   }|d         ||z  z   }|dk    r{d|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   rq   r   r   r   (\ @3333335@?皙@皙?r?  r|   r@  r~   rA  rD  rC                       H@rt   )r!   r   r   r(   r   r#   r   logr   r   rE  r'   r%   rF  rW   r=  r$   r   r   )r   r   r;   r   r  r   XM1abstr  wpbasicwpbasic2rH  wpRrJ  rK  rL  rM  rN  r  r  r   rO  zvzv1s                            r	   	zeta_halfrg    s    IGGAJJE

ACHqyyHHSVVsvXq!C!HHs5y$99qyysxx1SV8%%%UQYs1u::D	4A!AcggajjL!!Gbb*3r6!8A:5666y@BH'8$$G!Qswws2vax(((21455G
CGGC!G
Y
&q
(CCHOOAceU3775>>%9::;;E1uuSWWSWWQqs^^,,a/#&&..2BBc1uucggcgga!nn--.q0c1uucggcgga!nn--.q0c1uuSWWSWWQqs^^,,b0cCH
C%!**
%
%C
CQqs|| & &88CH%%CCHxx5!!H!ttVHSVO#!tt1vg#a&$Vhsl"!ttAhsl1SV8S!V,,SV3Bs1vIcMAVHSL !tt#a&ja#a&a/#a&<RAYs]JCAJsN3&&s1v-aAhsl:VHSL Avv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| _         |dk    r$|                     t	          |          d          }nK|                     d| j        z  |dz
            |                     t	          d|z
            d|z
            z  }|dk    r$d|                     |d| j        z  z            z  }nd|z  |z  }d|z
  dk    r$d|                     |d| j        z  z            z  }nLd|z  |                     d| j        z  |           z  |                     t	          |          |dz
            z  }t	          d|z
            }	d|	z  t          j        |	          z  }
t          dd| 
                    |          z             }d| 
                    d	|z  d
|z  |z  z   d|z  |z  |
z  z             z   |z   dz   }t          ||          }t          dd| 
                    d|z  |z            z   |z   dz             }d| 
                    dd|z  z             z   |z   dz   }|| _         |                     || j        ||                     d          z
  z  z
            }|}|                     d|z
            }|| _         t          | ||          \  }}|dk    rW|                     d|dz            |                     dd|z
  dz            z   dz  |                     | j                  dz  z
  }|dk    rA| j        |                     d|dz            |                     dd|z
  dz            z
  z  dz  }|dk    r:|                     d|dz            |                     dd|z
  dz            z    dz  }|dk    rB| j         |                     d|dz            |                     dd|z
  dz            z
  z  dz  }|| _         |                     d|z            }|dk    r|d         ||d         z  z   }|dk    r&|d          d|d         z  |z  z
  }|d         ||z  z   }|dk    rFd|d         z  |z  d|d         z  |dz  z  z   |d         z   d|d         z  |z  z   }|d         ||z  z   }|dk    r{d|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
    rT  r   rq   r   r   r   r   r   rU  rV  rW  rX  rY  r?  r|   r@  r[  r~   rA  rZ  rD  rC  r\  r]  rt   )r!   r   r   rf   r   r#   r(   r   r^  r   r   rE  r'   r%   r   r  rF  rW   r   )r   r   r;   r   r  r   r_  r`  M2ra  r  rb  rc  rH  rd  rJ  s1s2r  r  rK  rL  rM  rN  rO  re  rf  s                              r	   zeta_offlinerl    s8    IGGAJJE

ACHqyyIIc!ffc""IIaha((3qs88CI)F)FF		sxx1SV8%%%UQY	%!sxx1SV8%%%qS1SV8eV,,,SYYs1vveCi-H-HHs1u::D	4A!AcggajjL!!Gbb*3r6!8A:5666y@BH'8$$G!Qswws2vax(((21455G
CGGC!G
Y
&q
(CCHOOAceU3775>>%9::;;E	
B	!B$BCH31%%HC1uuSWWQr!t__SWWQ"ax%8%88!;cffSVnnQ>NNc1uuCE3771RT??3771adAX+>+>>?Ac1uucgga1oocgga2q&9&99:2=c1uuSUFCGGAbdOOCGGAqtQh,?,??@CcCHxx5!!HAvvVHSVO#Avv1vgaAhsl"VHSL AvvAhsl1SV8S!V,,c!f4RAYs]BVHSL Avv#a&ja3q6#q&03q6#=bQimKCAJsN3&&s1v-aAhsl:VHSL Avv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           
         |                      d          | j        |z  z   }|}|                     d|z
            }| j        }d| _        |                     |          dk    rYd|                     |                     |          d| j        z  z            z  }|                     t          |                    }njd| j        z  |                     |          dz
  z  t          d|z
            d|                     |          z
  z  z  }d|                     |          z  |z  }|                     |          dk    r7d|                     |                     |          d| j        z  z            z  }	nhd|                     |          z  d| j        z  |                     |          dz
  z  z  t          d|z
            d|                     |          z
  z  z  }	dt          | 	                    |                    z  }
|                     |          }|||	z   z  }d|z   }t          d	d|                     |
          z   |                     |d
d|
z  z   z            |z             }t          d|                     d|z            |z             }|                     d|z            |z   }|| _        | 	                    |          }|| _        t          | ||          \  }}dd|z  z   }dd|z  z
  }|dk    rNd|                     d|          |                     d|          z   z  |                     | j                  dz  z
  }|dk    r0d|                     d|          |                     d|          z
  z  }|dk    r0d|                     d|          |                     d|          z   z  }|dk    r0d|                     d|          |                     d|          z
  z  }|| _        |                     |          }|dk    r||d         z  |d         |z  z   }| j        }|dk    r5||z  |d         |d         |z  z   z  ||d         |d         |z  z   z  |z  z
  }|dk    rs|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    rd|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   rq   r   r   r      gRQ @g      ?y              ?y              ?g      y             r~   r   rB  rC  rD  )r%   r'   r   r!   r   r(   r   r#   r   rE  r   r   r  rF  rW   r   )r   r4   r;   r   rj  rk  r   r`  r_  ri  r  r^   r_   ra   rb  rH  rd  rJ  r  r  ptaptbrK  rL  rM  rN  rO  re  r'   rf  zv2s                                  r	   	z_offliners    s    	suQwA	
B	!B$BICH 	qsxxQZ0111HHSWWsvXQ'#ad))c#''"++o*FF_QqsxxQZ0111_ah#''"++a-88QrTSQS_9UU	#cooa  
!
!!A 88A;;DB<Di<D!Qswwqzz\3774AaC=#9#9$#>??G!CGGDI&&t+,,G
''!D&//$
CCHOOAECH3q##HC
a-C
a-C1uuD#''!C..378366#&>>!;KKc1uuTCGGAcNN3771S>>9:c1uuVcggannSWWQs^^;<c1uuVcggannSWWQs^^;<cCHxxHAvvc!f_SVH_,AAvvxZQAs
*+As1vc!fSj/@,A(,JJAvvr#a&y}SVCF]23q69!CF(3,FG"SV)C-AsAv-c!f4Qs1vXc\A8KKAvv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Avv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                 v   |dk    rt           |                     |          }|                     |          }|                     |          }|dk     r>|                     |                     |                     |          |                    }|S |dk    }|rt          | ||          S t          | ||          S )Nr   r   rq   )r   rH   r   r   r   rs_zetarg  rl  )r   r   
derivativekwargsreimrP  critical_lines           r	   ru  ru  b  s    A~~!!AA	B#''!**R	AvvHHS[[!j99::3YM 0a,,,CJ///r   c                    |                      |          }|                     |          }|                     |          }|dk     rt          | | |          S |dk    }|rt	          | ||          S t          | ||          S )Nr   )rH   r   r   rs_zrR  rs  )r   r4   rv  rx  ry  rz  s         r	   r|  r|  q  s    AA	B#''!**R	AvvC!Z(((1WM -c1j)))a,,,r   )r   )__doc__r   objectr   	functionsr   rC   rT   rc   rk   r  r=  rR  rg  rl  rs  ru  r|  r   r   r	   <module>r     sx  0 0d ( ( ( ( (f ( ( (      *t' t' t'l. . .6  	 	 	D D D DL $%# q q q qh& & & &P< < < <|@ @ @ @DF F F FP 0 0 0 0 	- 	- 	- 	- 	- 	-r   