Arb - a C library for arbitrary-precision ball arithmetic

_images/banner.jpg

Welcome to Arb’s documentation! Arb is a C library for rigorous real and complex arithmetic with arbitrary precision. Arb tracks numerical errors automatically using ball arithmetic, a form of interval arithmetic based on a midpoint-radius representation. On top of this, Arb provides a wide range of mathematical functionality, including polynomials, power series, matrices, integration, root-finding, and many transcendental functions. Arb is designed with efficiency as a primary goal, and is usually competitive with or faster than other arbitrary-precision packages. The code is thread-safe, portable, and extensively tested.

Arb is free software distributed under the GNU Lesser General Public License (LGPL), version 2.1 or later (see License).

The git repository is https://github.com/fredrik-johansson/arb/

Arb is developed by Fredrik Johansson (fredrik.johansson@gmail.com), with help from many contributors (see Credits and references). Questions and discussion about Arb are welcome on the flint-devel mailing list. There is also an issue tracker for bug reports and feature requests. Development progress is sometimes covered on Fredrik’s blog.

This documentation is available in HTML format at http://arblib.org and in PDF format at http://arblib.org/arb.pdf. This edition of the documentation was updated Dec 02, 2023 and describes Arb 2.23.0. Documentation for specific release versions is also available in PDF format.

General information

Example programs

Floating-point numbers

Arb uses two custom floating-point types in its implementation of ball arithmetic. The radius of a ball is represented using the type mag_t which is unsigned and has a fixed precision. The midpoint is represented using the type arf_t which has arbitrary precision.

Real and complex numbers

Real numbers (arb_t) are represented as midpoint-radius intervals, also known as balls. Complex numbers (acb_t) are represented in rectangular form, with arb_t balls for the real and imaginary parts.

Polynomials and power series

These modules implement dense univariate polynomials with real and complex coefficients. Truncated power series are supported via methods acting on polynomials, without introducing a separate power series type.

Transforms

Matrices

These modules implement dense matrices with real and complex coefficients. Rudimentary linear algebra is supported.

Special functions

These modules implement mathematical functions with complexity that goes beyond the basics covered directly in the arb and acb modules.

Calculus

Using ball arithmetic, it is possible to do rigorous root-finding and integration (among other operations) with generic functions. This code should be considered experimental.

Wrappers

Floating-point wrappers for Arb functions.

Extra utility modules

Mainly for internal use.

Supplementary algorithm notes

Here, we give extra proofs, error bounds, and formulas that would be too lengthy to reproduce in the documentation for each module.

Version history