_acb_dirichlet_refine_hardy_z_zero
#include <flint/acb_dirichlet.h>Below 4 \log_2 t + 40 bits, the Illinois method is used, with iterates at \text{prec} + \log_2 t + 8 bits but Z evaluated at only \text{prec} + 12 bits (its value near the zero is needed to about \text{prec} - \log_2 t bits after the binary point), so that the Riemann–Siegel main sum stays within reach of dfloat_powsum_sieved; when an iterate is so close to the zero that the sign of Z is undetermined, the zero is bracketed by the points at a quarter of the tolerance on either side instead of raising the precision. From \log_2 t + 96 bits, the zero is first refined to p_1 = (\text{prec} + \log_2 t)/2 + 16 bits, where Z is much cheaper, and finished by one secant step through the endpoints of that bracket and the signs of Z at a quarter of the tolerance on either side of the result: four evaluations at the target precision rather than a dozen for the Illinois method alone. Above 4 \log_2 t + 40 bits, Newton's method is used.
The FLINT team, “_acb_dirichlet_refine_hardy_z_zero (acb_dirichlet.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/acb_dirichlet/_acb_dirichlet_refine_hardy_z_zero.html (generated 2026-10-20).
@misc{flint-doc-acb-dirichlet-acb-dirichlet-refine-hardy-z-zero,
author = {{The FLINT team}},
title = {{\_acb\_dirichlet\_refine\_hardy\_z\_zero (acb\_dirichlet.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/acb_dirichlet/_acb_dirichlet_refine_hardy_z_zero.html},
note = {Generated 2026-10-20}
}