FLINT3.7.0-dev

_acb_dirichlet_refine_hardy_z_zero

Synopsis#include <flint/acb_dirichlet.h>
void _acb_dirichlet_refine_hardy_z_zero(arb_t res, const arf_t a, const arf_t b, slong prec)source

Sets res to the unique zero of ZZ in (a,b)(a, b), to prec bits.

Below 4log⁡2t+404 \log_2 t + 40 bits, the Illinois method is used, with iterates at prec+log⁡2t+8\text{prec} + \log_2 t + 8 bits but ZZ evaluated at only prec+12\text{prec} + 12 bits (its value near the zero is needed to about prec−log⁡2t\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 ZZ 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⁡2t+96\log_2 t + 96 bits, the zero is first refined to p1=(prec+log⁡2t)/2+16p_1 = (\text{prec} + \log_2 t)/2 + 16 bits, where ZZ is much cheaper, and finished by one secant step through the endpoints of that bracket and the signs of ZZ 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 4log⁡2t+404 \log_2 t + 40 bits, Newton's method is used.

Cite this page

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-11-02).