ζ(s, a) at a few values
source
<notatio-cell value="HurwitzZeta(2, 1)" />
<notatio-cell value="HurwitzZeta(2, 2)" />
<notatio-cell value="HurwitzZeta(0, a)" />The Riemann zeta
convergent for
@enumeratio/analytic adds HurwitzZeta (and a two-argument Zeta) to compute-engine by Euler–Maclaurin summation, aligned with Wolfram. Because the head is declared on the playground engine, you can evaluate it in any cell:
<notatio-cell value="HurwitzZeta(2, 1)" />
<notatio-cell value="HurwitzZeta(2, 2)" />
<notatio-cell value="HurwitzZeta(0, a)" />The first two reduce to closed forms — \operatorname{HurwitzZeta} — the bare \zeta(s, a) LaTeX still parses as the one-argument Riemann zeta.
As a bivariate function it is a smooth sheet for
<notatio-plot-3d value="HurwitzZeta(x, y)" x-domain="2,5" y-domain="0.35,3" label="ζ(s, a)" color-legend />Here Zeta drops exactly that term, so Zeta(s, 0) is finite and equals
The same surface with gpu set evaluates its grid in a WebGPU compute shader instead of on the CPU — HurwitzZeta compiles to the zetaWGSL kernel via compute-engine's WGSL target. It falls back to the CPU path automatically where WebGPU is unavailable, so the two look identical; the difference is a denser grid stays interactive. (Look for the GPU badge under the figure.)
A surface fixes one slice; a Manipulate hands you the rest. LerchPhi(z, s, a) has three arguments, and a surface can only show two — so sweep the one it cannot, and the sheet deforms as
At
Turn the same surface ninety degrees — plot it over
Raising
<notatio-plot-3d value="HurwitzZeta(x, y)" x-domain="2,5" y-domain="0.35,3" gpu="120" label="ζ(s, a)" color-legend />Both of these sit inside the Lerch transcendent
which is @enumeratio/analytic provides LerchPhi; the
<notatio-cell value="LerchPhi(1, 2, 1)" />
<notatio-cell value="LerchPhi(z, 0, a)" />The first is
Its surface Φ(z, 2, a) — sweeping
<notatio-plot-3d value="LerchPhi(x, 2, y)" x-domain="-0.9,0.9" y-domain="0.5,3" gpu="120" label="Φ(z, 2, a)" color-legend />Fix
→ ζ on the GPU: a phase portrait — the whole Euler–Maclaurin kernel running per pixel, in real time.