This page documents a clean repeat of Run005, using the same dataset (2M Riemann zeros, von Mangoldt unfolding) but with protocol corrections: unfolding fixed to mean 1.0, no overwriting, consistent KS/GUE reporting.
Purpose: to confirm that Run005’s GUE match (KS D ≈ 0.0125, Brody β ≈ 1.00) holds under a reproducible and auditable pipeline.
run005 — Repeat (GUE Alignment, 2M zeros)
Objective: re-run and audit run005 with fixed unfolding, figure regeneration, and a clear methods trail. Result: ECDF vs GUE with residuals within ±0.01; KS \(D = 0.0125\); Brody \(\beta \approx 1.00\).
- Dataset: first \( N = 2{,}000{,}000 \) non-trivial zeros (Odlyzko).
- Unfolding: von Mangoldt zero-density \( \bar{N}(T) \), unit mean spacing (unfolded s).
- Fit: GUE spacing model; ECDF residuals bounded in ±0.01 band for \( s \le 3.5 \).
- Statistics: KS \(D = 0.0125\); Brody \(\beta \approx 1.00\) (repulsion), GOE rejected.
Figures

Residual Plot

Methods (audit)
- Data: First \(2\text{M}\) zeros (Odlyzko). Use imaginary parts \(\gamma_n\), compute gaps \( \Delta \gamma_n = \gamma_{n+1}-\gamma_n \).
- Unfolding: Map gaps to unit mean via the local zero density \( \rho(T) \approx \frac{1}{2\pi}\log\!\Big(\frac{T}{2\pi}\Big) \); unfolded spacings \( s_n = \rho(\tilde{T}_n)\,\Delta \gamma_n \).
- ECDF & KS: Compute empirical CDF \(F_N(s)\); compare to GUE CDF \(F_\mathrm{GUE}(s)\); record \( D = \sup_s |F_N(s)-F_\mathrm{GUE}(s)| \).
- Brody fit: Fit \(\beta\) from Brody distribution to measure level repulsion; \(\beta\to1\) ≈ GUE-like.
- Residual band: Plot \(F_N - F_\mathrm{GUE}\) for \(s\le 3.5\) with ±0.01 guide lines.
Results
Run | Zeros (N) | Unfolding | KS D | Brody β | Residual band | Notes |
---|---|---|---|---|---|---|
run005-repeat | 2,000,000 | von Mangoldt | 0.0125 | ≈ 1.00 | ±0.01 (s ≤ 3.5) | GUE ≫ GOE; no drift in residuals |
Minimal reproducibility (Python sketch)
# Pseudocode for unfolding + ECDF + KS (replace ... with actual I/O)
import numpy as np
from math import log, pi
from scipy import stats
# zeros: array of gamma_n (imag parts), length N+1
g = np.loadtxt("zeros_first_2000000.txt") # placeholder
d = np.diff(g) # raw gaps
# local density at midpoints (rough)
T = 0.5*(g[1:] + g[:-1])
rho = (1.0/(2*pi))*np.log(T/(2*pi))
s = rho * d # unfolded spacings (mean ~1)
# GUE reference CDF via Wigner surmise (approx) or tabulated CDF
def gue_pdf(s): return (32/(pi**2))*(s**2)*np.exp(-(4/pi)*(s**2))
def gue_cdf(s): # numeric integrate or pre-tabulate
x = np.linspace(0, s, 4000)
return np.trapz(gue_pdf(x), x)
# ECDF & KS
s = s[(s>0) & (s<= 5)]
s.sort()
F_emp = np.arange(1, len(s)+1)/len(s)
F_ref = np.array([gue_cdf(x) for x in s])
D = np.max(np.abs(F_emp - F_ref))
print("KS D =", D)
Use your production scripts for exact unfolding and CDF reference; this sketch is only to illustrate the pipeline.
Notes
- Why GUE? RH-compatible statistics predict GUE-like repulsion. GOE/Poisson fail to match the near-origin behavior.
- Residuals: The ±0.01 band is a visual diagnostic; KS reports the sup norm across all s.
- Limitations: Empirical evidence ≠ proof; no explicit Hermitian \(H\) is constructed here.
Author: James Johan Sebastian Allen · Pattern Field Theory (AOL lattice)