Skip to content

RiemannSiegelZ ​

The Riemann–Siegel function Z(t)=eiϑ(t)ζ(12+it)Z(t) = e^{i\vartheta(t)}\zeta(\tfrac12 + it), real-valued for real tt by construction. Provided by @enumeratio/analytic.

✓ checked against that system · ! checked, with disagreements (hover a chip)Wolfram LanguageRiemannSiegelZ!
RiemannSiegelZ(t)the Riemann–Siegel Z-function.
Typed signatures
TypePackageApplies
(number) -> numberanalyticalways

Domain: Special functions

Details
  • Reuses RiemannSiegelTheta and the generalized-zeta kernel (Zeta/HurwitzZeta at a=1a=1); only the phase rotation onto the real line is added.
  • Numeric via N() or an inexact tt, same as RiemannSiegelTheta. Below ∣Re t∣≈100|{\rm Re}\,t| \approx 100 (real tt: 2000) it runs the Hurwitz zeta and log-gamma kernels; past that, the Riemann–Siegel formula with Gabcke's remainder terms (C0C_0 to C30C_{30}), continued to complex tt with ∣Im t∣≤12∣Re t∣|{\rm Im}\,t| \le \tfrac12\sqrt{|{\rm Re}\,t|} and carried in BigDecimal for the phase, which a double loses with tt. That is a double's digits for any ∣Re t∣|{\rm Re}\,t| up to 101010^{10}, where the zeta sum's phases lose a relative 10−910^{-9} by t=106t = 10^6.
  • N(…, d) past a double's digits uses the same formula as far as its terms reach (its series is asymptotic): about 60 digits at t=2⋅104t = 2\cdot10^4, 70 at 10510^5, 90 at 10610^6. Below that it falls back to the bignum Hurwitz zeta and log-gamma kernels (real tt up to 10510^5, complex up to 2⋅1042\cdot10^4), and past both it stays unevaluated rather than print fewer digits than were asked. N's refinement loop reads the value at 20 to 40 digits past dd, so dd is that much less than these.
  • The sign of ZZ on the real line is what RiemannZetaZero's zero-finder scans for.

Examples

1 more kept as data, checked against the oracles
Basic #
live ↗
InRiemannSiegelZ(1.5)\mathrm{RiemannSiegelZ}(1.5)Out−0.595 568 336 782 887-0.595\,568\,336\,782\,887
live ↗
InRiemannSiegelZ(20.5)\mathrm{RiemannSiegelZ}(20.5)Out0.599 328 702 514 751 30.599\,328\,702\,514\,751\,3
live ↗
InFullSimplify(Series⁡(RiemannSiegelZ(x),x,0,2))\mathrm{FullSimplify}(\operatorname{Series}(\mathrm{RiemannSiegelZ}(x), x, 0, 2))OutRiemannSiegelZ(0)+xRiemannSiegelZ′(0)+12(RiemannSiegelZ′′(0)x2)+O(x3)\mathrm{RiemannSiegelZ}(0)+x\mathrm{RiemannSiegelZ}^{\prime}(0)+\frac{1}{2}(\mathrm{RiemannSiegelZ}^{\prime\prime}(0)x^2)+O\left(x^3\right)
Scope #

A real-valued function evaluated at 13\frac13

live ↗
InN(RiemannSiegelZ(13))N(\mathrm{RiemannSiegelZ}(\frac{1}{3}))Out−1.232 186 779 063 262 3-1.232\,186\,779\,063\,262\,3

An even function, so the value at −12-12 matches Z(12)Z(12)

live ↗
InN(RiemannSiegelZ(−12))N(\mathrm{RiemannSiegelZ}(-12))Out−1.259 888 834 124 469 6-1.259\,888\,834\,124\,469\,6
live ↗
InN(RiemannSiegelZ(54),50)N(\mathrm{RiemannSiegelZ}(\frac{5}{4}), 50)Out−0.650 818 895 379 208 837 126 984 179 609 387 325 917 093 440 350 87-0.650\,818\,895\,379\,208\,837\,126\,984\,179\,609\,387\,325\,917\,093\,440\,350\,87
live ↗
InN(RiemannSiegelZ(43),20)N(\mathrm{RiemannSiegelZ}(\frac{4}{3}), 20)Out−0.629 639 150 443 481 539 65-0.629\,639\,150\,443\,481\,539\,65
live ↗
InN(RiemannSiegelZ(4+i))N(\mathrm{RiemannSiegelZ}(4+i))Out−0.589 299 974 971 081 3−0.104 133 167 496 573 24i-0.589\,299\,974\,971\,081\,3-0.104\,133\,167\,496\,573\,24i

Z(10)Z(10), real and negative

live ↗
InN(RiemannSiegelZ(10))N(\mathrm{RiemannSiegelZ}(10))Out−1.549 194 546 181 024 1-1.549\,194\,546\,181\,024\,1
live ↗
InSeries⁡(RiemannSiegelZ(x),x,0,2)\operatorname{Series}(\mathrm{RiemannSiegelZ}(x), x, 0, 2)OutRiemannSiegelZ(0)+xRiemannSiegelZ′(0)+12(RiemannSiegelZ′′(0)x2)+O(x3)\mathrm{RiemannSiegelZ}(0)+x\mathrm{RiemannSiegelZ}^{\prime}(0)+\frac{1}{2}(\mathrm{RiemannSiegelZ}^{\prime\prime}(0)x^2)+O\left(x^3\right)
live ↗
InFullSimplify(Normal⁡(Series⁡(RiemannSiegelZ(x),x,x0,2)))\mathrm{FullSimplify}(\operatorname{Normal}(\operatorname{Series}(\mathrm{RiemannSiegelZ}(x), x, \mathrm{x0}, 2)))Out12(RiemannSiegelZ′′(x0)(x−x0)2)+(x−x0)RiemannSiegelZ′(x0)+RiemannSiegelZ(x0)\frac{1}{2}(\mathrm{RiemannSiegelZ}^{\prime\prime}(\mathrm{x0})(x-\mathrm{x0})^2)+(x-\mathrm{x0})\mathrm{RiemannSiegelZ}^{\prime}(\mathrm{x0})+\mathrm{RiemannSiegelZ}(\mathrm{x0})

Next to the real axis the imaginary part of ZZ is y Z′(t)y\,Z'(t): here −10−50-10^{-50} times Z′(105)≈16.23Z'(10^5) \approx 16.23, with all its digits

live ↗
InN(ℑ(RiemannSiegelZ(100 000+−i1050)),20)N(\Im(\mathrm{RiemannSiegelZ}(100\,000+\frac{-i}{10^{50}})), 20)Out−1.623 035 867 336 958 674 4⋅10−49-1.623\,035\,867\,336\,958\,674\,4\cdot10^{-49}
Properties #

Z(0)=ζ(1/2)Z(0) = \zeta(1/2)

live ↗
InN(RiemannSiegelZ(0))N(\mathrm{RiemannSiegelZ}(0))Out−1.460 354 508 809 586 8-1.460\,354\,508\,809\,586\,8
live ↗
InFullSimplify(ζ(it+12)−RiemannSiegelZ(t)exp⁡(−iRiemannSiegelTheta(t)))\mathrm{FullSimplify}(ζ(i t+\frac{1}{2})-\mathrm{RiemannSiegelZ}(t)\exp(-i\mathrm{RiemannSiegelTheta}(t)))Outζ(it+12)−RiemannSiegelZ(t)exp⁡(−iRiemannSiegelTheta(t))ζ(i t+\frac{1}{2})-\mathrm{RiemannSiegelZ}(t)\exp(-i\mathrm{RiemannSiegelTheta}(t))
About
Examples15
Checked againstWolfram Language 13 agree2 differ
CrosswalkWolfram Language

Implementation

primitive · numericirreducibly numeric — it evaluates rather than rewrites

nativeenginetypescriptpackages/symbols/analysis/analytic/src/riemann-siegel.ts
mappedexternalwolfram / mpmathpackages/oracle/src/mappings.ts

RiemannSiegelZ[t]; mpmath.siegelz(t).

See also: RiemannSiegelTheta, Zeta, RiemannZetaZero