Skip to content

RiemannZetaZero ​

The kk-th nontrivial zero of the Riemann zeta function on the critical line, 12+itk\tfrac12 + i t_k for a positive integer kk. Wolfram calls this ZetaZero; compute-engine's own Fungrim identity table already spells it RiemannZetaZero. Provided by @enumeratio/analytic.

✓ checked against that system · ! checked, with disagreements (hover a chip)FungrimRiemannZetaZeroFungrim entry60c2ecWolfram LanguageZetaZero!
RiemannZetaZero(k)the k-th nontrivial zero, 12+itk\tfrac12 + i t_k.
Typed signatures
TypePackageApplies
(integer) -> numberanalyticalways

Domain: Special functions

Details
  • tkt_k is found by scanning RiemannSiegelZ for sign changes along the real line from t≈0t \approx 0, counting crossings as it goes, then bisecting the bracket once the kk-th crossing turns up. This counts crossings directly rather than bracketing between Gram points, so it isn't exposed to a Gram's-law failure (the first is at Gram index 126) the way a Gram-point method would be.
  • Supported range: kk such that tk≤2000t_k \le 2000 — comfortably past the first 1000 zeros, and well beyond every example here. Above that the call is left symbolic rather than guess further out with an unvalidated scan; k<1k < 1 is likewise left symbolic, and a non-integer kk is a type error.
  • Numeric only (N() or an inexact operand) — the real part is always exactly 12\tfrac12; the search cost is in the imaginary part.
  • N(…, d) past a double's digits refines the double zero by Newton's method on the bignum RiemannSiegelZ.

Examples

1 more kept as data, checked against the oracles
Basic #

The first nontrivial zero, 12+14.1347…i\tfrac12 + 14.1347\ldots i

live ↗
InN(RiemannZetaZero(1))N(\mathrm{RiemannZetaZero}(1))Out0.5+14.134 725 141 734 695i0.5+14.134\,725\,141\,734\,695i
live ↗
InN(RiemannZetaZero(2))N(\mathrm{RiemannZetaZero}(2))Out0.5+21.022 039 638 771 556i0.5+21.022\,039\,638\,771\,556i
Scope #
live ↗
InN(RiemannZetaZero(10))N(\mathrm{RiemannZetaZero}(10))Out0.5+49.773 832 477 672 3i0.5+49.773\,832\,477\,672\,3i

The first three zeros, all with real part 12\frac12

live ↗
InN([RiemannZetaZero(1),RiemannZetaZero(2),RiemannZetaZero(3)])N(\bigl\lbrack\mathrm{RiemannZetaZero}(1), \mathrm{RiemannZetaZero}(2), \mathrm{RiemannZetaZero}(3)\bigr\rbrack)Out[0.5+14.134 725 141 734 695i,0.5+21.022 039 638 771 556i,0.5+25.010 857 580 145 69i]\bigl\lbrack0.5+14.134\,725\,141\,734\,695i, 0.5+21.022\,039\,638\,771\,556i, 0.5+25.010\,857\,580\,145\,69i\bigr\rbrack
live ↗
InN(RiemannZetaZero(54),50)N(\mathrm{RiemannZetaZero}(54), 50)Out0.5+150.925 257 612 241 466 761 852 524 678 305 627 602 426 770 473i0.5+150.925\,257\,612\,241\,466\,761\,852\,524\,678\,305\,627\,602\,426\,770\,473i
live ↗
InN(RiemannZetaZero(46),20)N(\mathrm{RiemannZetaZero}(46), 20)Out0.5+134.756 509 753 373 871 33i0.5+134.756\,509\,753\,373\,871\,33i
live ↗
InN(RiemannZetaZero(−1)=RiemannZetaZero(1)‾)N(\mathrm{RiemannZetaZero}(-1)=\overline{\mathrm{RiemannZetaZero}(1)})OutTrue\mathrm{True}
Possible issues #

Index 0 has no zero, so it stays unevaluated

live ↗
InN(RiemannZetaZero(0))N(\mathrm{RiemannZetaZero}(0))OutRiemannZetaZero(0)\mathrm{RiemannZetaZero}(0)
About
Examples9
Checked againstWolfram Language 8 agree1 differ
CrosswalkFungrimFungrim entryWolfram Language

Implementation

primitive · numericirreducibly numeric — it evaluates rather than rewrites

nativeenginetypescriptpackages/symbols/analysis/analytic/src/riemann-siegel.ts

sign-change scan of RiemannSiegelZ + bisection; see the file header for the range this covers.

mappedexternalwolfram / mpmathpackages/oracle/src/mappings.ts

ZetaZero[k]; mpmath.zetazero(k).

See also: RiemannSiegelZ, Zeta