Riemann zeta tools¶
Numerisect provides native, arbitrary-precision Riemann-zeta analysis through a compiled C helper linked to FLINT/Arb. Python validates requests and parses tagged native output; JavaScript renders results and charts. Neither interface layer evaluates the zeta function.
Opening the workspace¶
Start the source checkout with ./run.sh and select Riemann zeta, or open
http://127.0.0.1:8765/#zeta. Zeta uses its own workspace, separate from the
133 individually routed Prime Tools pages. Zeta itself has 22 individually
routed operations. Choose an operation, enter its
precision and any available thread settings, then submit it. The zeta result
panel contains the native result, exact report path, and download control.
Restart the server and refresh the browser after source updates.
The twelve explicit-formula, zero-statistics, and L-function operations are documented separately in Zeta lab.
The versioned user installer and Linux/WSL/macOS prerequisites are documented in Installation and versioning. FLINT development headers are required for the zeta helper.
Available operations¶
| Tool | Native operation | Result semantics |
|---|---|---|
Evaluate ζ(s) |
acb_zeta |
Rigorous Arb enclosures for real part, imaginary part, magnitude, and argument |
Hardy/Riemann–Siegel Z(t) |
acb_dirichlet_hardy_z |
Rigorous real enclosure on the critical line |
| Completed xi / Dirichlet eta | acb_dirichlet_xi, acb_dirichlet_eta |
Rigorous complex enclosures and analytic continuation |
| Functional equation | Independent FLINT/Arb evaluation of both sides | Verified only when the resulting complex balls overlap |
| Stieltjes constants | acb_dirichlet_stieltjes |
Rigorous enclosure for γ_n in the Laurent expansion at 1 |
| Gram point | acb_dirichlet_gram_point |
Rigorous enclosure for one requested g_n |
| Consecutive zeros | acb_dirichlet_hardy_z_zeros |
Rigorous intervals for consecutive Hardy Z zeros on Re(s)=1/2 |
| Count zeros through T | acb_dirichlet_zeta_nzeros |
Exact uniquely isolated count using FLINT's Turing method |
| Critical-line plot | Parallel acb_zeta samples |
Exploratory chart of enclosure midpoints |
| Argand plot | The same native critical-line samples | Exploratory complex trace of enclosure midpoints |
| Complex heatmap | Parallel acb_zeta grid samples |
Exploratory magnitude/phase colors from enclosure midpoints |
The evaluation endpoint rejects s=1, where zeta has a pole. A heatmap that
contains that point preserves it as JSON null and draws it black instead of
emitting a non-standard NaN value.
Certification boundaries¶
The imported research prototype included an incomplete custom approximation described as Riemann–Siegel and a configurable zero-count comparison described as Turing certification. Numerisect does not expose those claims. The omitted remainder in an asymptotic formula and user-chosen heuristic bounds do not constitute a proof.
Instead, Numerisect delegates certified work to FLINT/Arb. Evaluation values
are printed as explicit balls, such as [midpoint +/- radius]. Zero ordinates
include their radius and interval. The zero-count endpoint succeeds only when
FLINT isolates a unique integer count; otherwise it asks the user to increase
precision or move the endpoint.
Plots are intentionally labeled exploratory. Native Arb arithmetic computes each point, but a finite chart displays only midpoint samples and cannot prove behavior between pixels.
Threads, precision, and limits¶
Thread controls default to all detected logical CPUs. FLINT's zero routines use its thread pool; line and heatmap sampling use OpenMP with independent Arb objects per worker. The request accepts 16–1,000 decimal digits of precision, up to 1,000 zero intervals, up to 10,000 line samples, and heatmap dimensions up to 500 × 500. These are interface/resource limits, not mathematical fixed-precision limits in FLINT.
Every successful operation is saved automatically in output/; the result
panel shows the exact output/<filename>.txt path and a download button.
API examples¶
First create the local session cookie described in the security model.
curl --cookie numerisect.cookies -X POST http://127.0.0.1:8765/api/zeta/evaluate \
-H 'Content-Type: application/json' \
-d '{"sigma":"0.5","ordinate":"14.134725","precision":50}'
curl --cookie numerisect.cookies -X POST http://127.0.0.1:8765/api/zeta/zeros \
-H 'Content-Type: application/json' \
-d '{"start_index":"1","count":10,"precision":50,"threads":8}'
curl --cookie numerisect.cookies -X POST http://127.0.0.1:8765/api/zeta/count \
-H 'Content-Type: application/json' \
-d '{"height":"100","precision":50,"threads":8}'
curl --cookie numerisect.cookies -X POST http://127.0.0.1:8765/api/zeta/functional-equation \
-H 'Content-Type: application/json' \
-d '{"sigma":"0.25","ordinate":"12","precision":50}'
Plot endpoints are /api/zeta/line and /api/zeta/heatmap. Their output
reports contain the native samples used by the browser.
Implementation map¶
| File | Responsibility |
|---|---|
numerisect/native/numerisect_zeta.c |
FLINT/Arb evaluation, zero isolation/counting, OpenMP sampling, tagged output |
numerisect/native_tools.py |
Detect FLINT and compile the helper into the managed tools directory |
numerisect/zeta.py |
Validation, subprocess boundary, and strict result parsing |
numerisect/main.py |
HTTP models, endpoints, error mapping, and report persistence |
numerisect/static/index.html |
Zeta workspace and precision/thread controls |
numerisect/static/app.js |
Result presentation and canvas drawing only |
tests/test_zeta.py |
Known values, certified zeros/count, sampling, pole, and validation tests |