FLINT3.7.0-dev
Overview

Rigorous numerics

These tutorials compute with real and complex numbers in ball arithmetic (arb.h, acb.h and the modules built on them). A ball [m \pm r] is a floating-point midpoint m with an error bound r, and every operation returns a ball that is guaranteed to contain the exact result for all inputs in the input balls. A program built from such operations therefore produces a mathematically proved enclosure of the true answer: the digits it prints are correct, not estimates. What ball arithmetic does not guarantee is that the enclosure is narrow. The recurring theme of these tutorials is how to get narrow enclosures at a reasonable cost:

  • choosing the working precision, and increasing it when the result is not accurate enough (the precision is an input; the accuracy is measured on the output);
  • adding the errors that ball arithmetic cannot see, such as the truncation error of a series or of an iteration, with explicit bounds;
  • writing formulas that do not overestimate the error, and recognising when a wide ball is caused by the formula rather than by the problem;
  • using the library functions that do all of this internally for standard problems: constants, special functions, polynomial roots, root isolation for real functions, integration, zeros of the zeta function.

The first tutorials introduce the basic techniques with constants and simple iterations; the later ones apply them to roots, integrals and the Riemann zeta function. Two of them develop a complete rigorous computation from scratch: Summing a series with a rigorous error bound and Proving and computing a root with the interval Newton method.

Each tutorial also describes the related programs in FLINT's examples directory: what they compute, their options and sample output. They are built with make examples (see The example programs); the sample output shown was produced with build/examples/<name>, and the timing and memory lines it contains vary between machines.

For background, see the user guide chapter Ball arithmetic for the semantics of balls and the conventions of the ball arithmetic modules, and the overviews of the algorithms for ball arithmetic and for special functions.

In this section#

TutorialComputing π and other constantsPrecision versus accuracy, reading and printing balls, the built-in constants, and an AGM iteration for π with an explicit truncation error bound; the example programs pi and pi_agm.TutorialChoosing the precision: the logistic map and Hilbert matricesRestarting with doubled precision until the result is accurate, how fast accuracy is lost in an iteration and why the formula matters, and the determinant of ill-conditioned Hilbert matrices; the example programs logistic and hilbert_matrix.TutorialSumming a series with a rigorous error boundA complete rigorous computation from scratch: truncating an infinite series, bounding the tail, choosing the number of terms and the working precision, and verifying the result; with the dilogarithm at 1/2 and Apéry's series for ζ(3).TutorialSpecial functions in ball arithmeticCalling special functions on balls, how input uncertainty and cancellation show up in the output, when to raise the precision, and accurate double-precision values with arb_fpwrap; the example programs fpwrap, complex_plot and functions_benchmark.TutorialIsolating the real roots of a functionCertified isolation of all roots of a real function on an interval by bisection and sign tests, refinement by bisection and by Newton's method with a rigorous error bound, with arb_calc; the example program real_roots.TutorialProving and computing a root with the interval Newton methodA complete rigorous computation from scratch: the interval Newton operator, a proof of existence and uniqueness of a root, exclusion of roots by bisection, and quadratic refinement to 1000 digits with precision doubling, for the omega constant x e^x = 1.TutorialCertified roots of polynomialsAll real and complex roots of integer polynomials with arb_fmpz_poly, multiplicities via squarefree factorisation, and roots of polynomials with inexact coefficients with acb_poly_find_roots and a precision loop; the example program poly_roots.TutorialRigorous numerical integrationIntegrals with guaranteed error bounds using acb_calc_integrate: writing the integrand, holomorphy and branch cuts, piecewise functions, infinite intervals by truncation with a tail bound, and accuracy goals; the example programs integrals, taylor_integrals and integrals_double_exp.TutorialThe Riemann zeta function, its zeros and L-functionsCertified zeros of the Riemann zeta function on the critical line, the Hardy Z-function, Laurent and Taylor coefficients, and Dirichlet L-functions with acb_dirichlet; the example programs zeta_zeros, lvalue, lcentral and keiper_li.

Referenced from#

Cite this page

The FLINT team, “Rigorous numerics,” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/tutorials/numerics/index.html (generated 2026-10-20).