/teal-sea
teal-sea / zeta-labstate of record · compiled 28 Sep 2026 · revision e4945c4 · source

Library · docs/34-zeros-in-tuning-units.md

34. The Riemann zeros in tuning units

2,384 words · 256 lines · source

Hunt #76 (hunts/zeta_temperament/). Verdict: INTERESTING STRUCTURE, classical in substance. Measured in steps-per-octave, the Riemann zeros avoid the equal temperaments that tune prime-power harmonics and ignore the ones that tune composites, with the exact deficit Landau's formula prescribes. On Odlyzko's first 100,000 zeros every prime power lands within 0.0012 of the prediction and every composite gives 0.0000. The mathematics is Landau (1912); the reading, and the composite control that makes it vivid, are this laboratory's. Nothing here is evidence about RH (docs/08).

Correction notice, 2026-08-22. The prior-art account in section 7 was materially incomplete, in the direction that flattered this hunt: it reported a web search and no search of this repository, and the in-tree search finds the result. zeta.explicit.prime_spectrum already computes the quantity E1 measures. Its docstring states the identity outright, "a spike train with a peak at every u = log p^k, and no peak anywhere else", and zeta.plots.plot_prime_spectrum draws it. On the same 2000 cached zeros, prime_spectrum returns +392.3556 at u = log 2 where E1's route returns -0.09809, the same quantity up to the factor -2N, and -4.1060 at u = log 6 where E1 returns +0.00103. E1 is a re-measurement of a quantity this repository already exposes, and its composite control restates that docstring's "no peak anywhere else". The hunt was written without reading CONTEXT.md, the generated index that lists prime_spectrum on sight.

Nothing measured was wrong and nothing is withdrawn; what was wrong was the claim about what had been searched. What remains this hunt's own: the tuning coordinate, the smoothed density table E2 against the Landau prediction, the height-band decay, the harmonic-horizon caveat F3, and section 6, which was added by the same review that produced this notice.

1. Definitions

mean over zeros of e^{2 pi i theta log2 n} ~ -Lambda(n) / (sqrt n · <log(gamma/2 pi)>).

At n = 2^k the left side is the k-th Fourier coefficient of the distribution of theta mod 1, so the octave tower 2, 4, 8, ... fixes the density of zeros mod 1 in tuning units. At other prime powers it says the zeros avoid the x for which x log2 p is near an integer, the temperaments that tune the harmonic p. At composites Lambda(n) = 0 and the coefficient must vanish, which is the built-in control.

2. Derivable facts

F1. Landau's formula in these units is exactly the statement above; no new mathematics, a change of variable.

F2. Since Lambda(2^k) = ln 2 for every k, the density of zeros at integer x is depleted, to first order, by 2 ln 2 (sum_k 2^{-k/2}) / L = 2 ln 2 (1 + sqrt 2) / L ≈ 3.35 / L with L = <log(gamma / 2 pi)>, and enhanced at half-integers by 2 ln 2 / ((1 + sqrt 2) L) ≈ 0.57 / L. The deficit decays like 1 / log t: the zeros become uniform in tuning units, slowly (Hlawka's theorem), and at any finite height they are not.

F3. Harmonic horizon. The Riemann-Siegel main sum runs over n <= sqrt(t / 2 pi) = sqrt(x / ln 2) ≈ 1.2 sqrt x, with a remainder of size x^{-1/4} that depends on the fractional part of sqrt(x / ln 2) and not on how any higher harmonic is tuned. So the zeta score of the x-EDO is decided by the harmonics up to 1.2 sqrt x. For 12-EDO that is harmonics 1 to 4: the main sum gives 5.385 against Z = 5.084, and the major third (harmonic 5) enters only through the universal remainder. For 53-EDO the horizon is 8.7; for 311-EDO, 21.

3. Empirical results

E1. The harmonic spectrum of the zeros (probe_landau_edo.py, Odlyzko zeros1, 100,000 zeros, gamma <= 74,921, L = 8.505, checksum pinned, loaded through zeta.moments.load_odlyzko_zeros):

nlog2 nmeasuredLandau
21.000-0.0584-0.0576prime power
31.585-0.0756-0.0746prime power
42.000-0.0413-0.0407prime power
52.322-0.0858-0.0846prime power
62.585+0.00000composite
72.807-0.0877-0.0865prime power
83.000-0.0292-0.0288prime power
93.170-0.0436-0.0431prime power
103.322+0.00000composite
113.459-0.0862-0.0850prime power
123.585+0.00000composite
133.700-0.0848-0.0836prime power
164.000-0.0206-0.0204prime power
254.644-0.0384-0.0378prime power
274.755-0.0252-0.0249prime power
325.000-0.0146-0.0144prime power

For 100,000 uniformly random points the standard error of each coefficient would be 0.0022. The composites are zero to four decimals, which is tighter than random points would allow: Landau's O(log T) remainder divided by 100,000 is 10^{-4}. The zeros are not random and they know which harmonics are prime. figures/zeta_temperament_landau.png.

E2. Density in tuning units (box window ±0.1 step, uniform = 1):

wheremeasuredpredicted
integer x (pure-octave temperaments)0.8010.800
half-integer x1.0691.067
x log2 3 near an integer (53, 665, ... territory)0.7620.767
x log2 6 near an integer (composite control)0.9971.000

By height band at integers: (0, 1000] 0.570 vs 0.605; (1000, 5000] 0.730 vs 0.722; (5000, 20000] 0.780 vs 0.775; (20000, 75000] 0.811 vs 0.809. The deficit shrinks like 1 / log t as F2 says. figures/zeta_temperament_density.png.

E3. Second table. The laboratory's own 2000 cached zeros (zeta.explicit.first_zeros, computed here, independent of Odlyzko) give the same picture at lower height: prime powers within 3 percent of Landau, composites within 0.0012, density at integers 0.655 against 0.672 predicted, and only 4.9 percent of zeros within 0.05 of an integer against 10 percent for uniform.

E4. Calibration against the known result (probe_peaks_edo.py). At integer x in [5, 400], |Z| against a tuning error that never mentions zeta (RMS deviation of x log2 p from integers, weighted 1/sqrt p): Spearman -0.59 for p = 3 alone, -0.72 for p <= 7, -0.78 for p <= 13; null 99.9th percentile 0.22; no shared trend with x (Spearman(x, error) = 0.003). Detrended by the local RMS of |Z|, the top of the ranking is 311, 270, 342, 224, 171, 118, 53, which is the list microtonal practice arrived at on its own; 7 of 15 classic temperaments sit in the top 24 of 396 (chance 0.9). Reproduced, not claimed: Gene Ward Smith, OEIS A117536.

E5. Tried and dropped. The pair correlation of zeros mod 1 in tuning units (Bogomolny-Keating would put an arithmetic correction at integer separations): at 100,000 zeros the first coefficient is +0.010, below what this hunt can resolve from a box-window artefact.

4. What this is and is not

It is Landau's formula read in a coordinate that a different community uses for a different purpose, and that reading makes the explicit formula audible: the zeros avoid the temperaments that tune primes, harmonic n pushing with weight Lambda(n) / sqrt n, and composites pushing not at all. The numbers are four-decimal confirmations of a 1912 theorem on verified zeros, so the grade is measured on the table and theorem on the statement. What is original here is the framing, the composite control and the harmonic-horizon remark (F3), which is a concrete caveat for the Xenharmonic use of |zeta| as a tuning metric at small x. Nothing here bears on RH: Landau's formula is unconditional, and the zeros used are on the line by Odlyzko's verification, not by hypothesis.

5. Follow-ups

6. The Euler-product discriminator, and the Epstein family

Added 2026-08-22 by the review that produced the correction notice above. Section 3's composite control is a restatement of a known identity, so on its own it distinguishes nothing. It becomes a discriminator when pointed at a function that shares zeta's functional equation and lacks its Euler product, which is what docs/09 gate #3 asks of any structural claim.

F4. For a Dirichlet series f = sum a(n) n^-s with a(1) = 1, write -f'/f = sum c(n) n^-s, so that c(n)/sqrt(n) is the weight of frequency log n in the zero distribution (Weil). Then f has an Euler product if and only if log f is supported on prime powers, if and only if c is. A nonzero c at a composite is a failure of multiplicativity, read off the zeros. For zeta, c is von Mangoldt, re-derived by the recursion in probe_euler_discriminator.py rather than assumed.

E6. Measured composite defect, the explicit-formula-weighted L2 norm of the composite part of c over n < 61:

subjectcomposite defectloudest line
zeta2.82e-31 (machine zero)prime powers only
Davenport-Heilbronn2.0507n = 51 = 3 x 17, composite, c = +4.2491

Davenport-Heilbronn's coefficients are periodic mod 5, not multiplicative (a_6 = a_1 = 1 while a_2 a_3 = -kappa^2; zeta/epstein.py states this), and its loudest single spectral line is a composite, exceeding its loudest prime line (2.3979) by a factor 1.77.

E7. The Epstein zeta functions of binary quadratic forms give a family indexed by discriminant, with class number one supplying an Euler product (zeta_Q = w zeta L(chi_d)) and class number above one destroying it:

| -3 | 1 | 0.0000 | 1.07e-31 | | -4 | 1 | 0.0000 | 3.17e-31 | | -7 | 1 | 0.0000 | 6.10e-31 | | -8 | 1 | 0.0000 | 4.44e-31 | | -11 | 1 | 0.0000 | 4.28e-31 | | -15 | 2 | 36.0644 | 5.66e-31 | | -20 | 2 | 18.6176 | 6.37e-31 | | -23 | 3 | 3.5569 | 1.50e-30 | | -24 | 2 | 12.4955 | 5.09e-31 | | -31 | 3 | 3.3991 | 1.02e-30 | | -39 | 4 | 7.6474 | 8.16e-31 | | -47 | 5 | 3.4709 | 1.88e-30 | | -71 | 7 | 3.2614 | 1.77e-30 | | -95 | 8 | 4.2511 | 1.58e-30 |

Class number one: the defect is exactly zero, 5 discriminants. Class number above one: every individual form is loud, up to 36.06 at d = -15, 9 discriminants. And in every case the class-group sum returns to machine zero, because sum over classes of zeta_Q is w zeta_K, which has an Euler product: the composite lines of the individual forms cancel to thirty decimal places across the class group. All three facts are consequences of standard theory; the measurement is a calibration of the discriminator, not a discovery about Epstein zeta functions.

Scope. This separates zeta from a rival that violates RH, which is what the battery asks. It does not bear on RH: it detects the Euler product, and Davenport-Heilbronn was already known to lack one. The open question it frames, and does not answer, is whether the defect bounds how far zeros may leave the critical line. Testing that needs off-line zeros for the family, and epstein_zeta costs about 2.2 s per evaluation at dps 15, so it is a compute job this hunt did not run.

7. What was searched

See the correction notice at the head of this document: the search below omitted this repository, and this repository had the result.

The Xenharmonic Wiki pages "The Riemann zeta function and tuning", "Zeta peak index" and "Table of zeta-stretched edos", OEIS A117536, and Belmans' 2012 note were read; they treat the peaks and the Gram points and not the distribution of zeros mod 1. One web search for the zeros in this framing found nothing. That is weak evidence of absence and is reported as such.

Reproduce

.venv/bin/python hunts/zeta_temperament/probe_landau_edo.py   # fetches data/odlyzko/zeros1 if absent
.venv/bin/python hunts/zeta_temperament/probe_peaks_edo.py
.venv/bin/python hunts/zeta_temperament/probe_euler_discriminator.py
.venv/bin/python hunts/zeta_temperament/make_figures.py
.venv/bin/python -m pytest -q tests/test_zeta_temperament.py