## An amortized-complexity method to compute the Riemann zeta function

• Preparation of this material is partially supported by the National Science Foundation under agreement No. DMS-1406190.

• Let $Z(t)$ denote the rotated zeta function. We have $|Z(t)| = |\zeta(1/2 + it)|$, and $|Z'(t_j)| = |\zeta'(1/2+it_j)|$ where $t_j$ is a real zero ordinate. The goal of these computations is to collect data sets spanning several hundred million zeta zeros near $T = \ldots,10^{24}, 10^{25}, 10^{26}, 10^{27}, 10^{28}$. In addition, the derivative and max of $Z(t)$ are computed.

The computations were carried out using this amortized complexity algorithm for zeta. The main advantages of this algorithm are it is simple to implement, it does not use the fast Fourier transform or large amounts of memory, and its error terms are easy to control. (A basic version of this algorithm will be available in lcalc.) The table below contains links to some of the data, in case it's of interest.

See the following directory for thesis, data files, and code of my MS student Lin Zhao for computing the nearest neighboring spacing distribution functions of eigenvalues of GUE matrices.
• Table of data for the rotated zeta function $Z(t)$ at various heights $T$ computed using the amortized-complexity algorithm
$T$ sample data for $Z(t)$: using $10^7$ zeros near each height $T$
1e12 zero ordinates max between consecutive zeros derivative at zeros
1e13 __ __ __
1e14 __ __ __
1e15 __ __ __
1e16 __ __ __
1e17 __ __ __
1e18 __ __ __
1e19 __ __ __
1e20 __ __ __
1e21 __ __ __
1e22 __ __ __
1e23 __ __ __
1e24 __ __ __
1e25 __ __ __
1e26 __ __ __
1e27 __ __ __
1e28 __ __ __

### Remarks:

• This is meant as sample data, possibly useful in initial experiments. Substantially more data has been computed; e.g. approx $4\times 10^8$ zeros near $T = 10^{28}$.
• The linked files are zipped text files, about 110 megabytes in size. Each unzipped "zeros file" is about 400 megabytes. Each unzipped "max file" or "derivatives file" is about 250 megabytes.
• The data files have a trailing "-1" on the last line, which is convenient for some purposes.
• Point-wise evaluations of $\zeta(1/2 + iT + it)$, $T> 10^{15}$, are typically accuarate (i.e. in the root-mean-square sense) to within $\pm 5 \times 10^{-11}$, which is sufficient for my current purposes.
• Zero ordinates are typically accurate (i.e. in the root-mean-square sense) to within $\pm 5 \times 10^{-12}$, for $T > 10^{15}$. The ordinates are listed with the integer and fractional parts separated. The integer part is offset by $T$ (itself an integer).
• The "derivative at zeros" files contain the derivative of the rotated zeta function $Z'(T+t_j)$, where $t_j$ is a real zero ordinate. The derivative was computed using a numerical differentiation formula. The values of the derivative may not be accurate to more than $\pm 10^{-5}$.
• The max of $|Z(T +t)|$ between consecutive zero ordinates was computed to within $\pm 10^{-9}$ typical precision.
• To test the computational correctness of the data, it was ensured that it agreed with some of Andrew Odlyzko's data (from near $T = 10^{15}, 10^{19}$, and $10^{22}$) to the expected accuracy. Another, less strong, check was to ensure that the data obtained by running the algorithm with different parameter choices agreed to the expected accuracy. Also, no counter examples to the RH were found, which is a further check of the validity of the computations.
• Computing the above data near $T = 10^{28}$ took about 8.20028e+07 cpu seconds to finish @2.27GHz processor speed (about 75% of the time was spent performing the $T^{1/2+o(1)}$ precomputation). Thanks to the riemann machine at U. Waterloo, where 14 nodes each having 8 cores @2.27GHz were typically available, this took roughly 100 hours in real time.
• Memory requirements of the algorithm are moderate, requiring about 1.5GB of RAM for each node on the riemann machine.