# Arb - a C library for arbitrary-precision interval arithmetic¶

Welcome to Arb’s documentation! Arb is a C library for arbitrary-precision interval arithmetic, using a midpoint-radius representation (“ball arithmetic”). It supports real and complex numbers, polynomials, power series, matrices, and evaluation of many transcendental functions. All operations are done with automatic, rigorous error bounds. 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. The version of the documentation you are currently reading was updated Feb 27, 2017 and describes Arb 2.10.0. Documentation for specific release versions is also available in PDF format.

## General information¶

## Floating-point numbers¶

The radius and midpoint of a ball are represented using two specialized floating-point types.

## 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 balls for the real and imaginary parts.

**arb.h**– real numbers- Types, macros and constants
- Memory management
- Assignment and rounding
- Assignment of special values
- Input and output
- Random number generation
- Radius and interval operations
- Comparisons
- Arithmetic
- Powers and roots
- Exponentials and logarithms
- Trigonometric functions
- Inverse trigonometric functions
- Hyperbolic functions
- Inverse hyperbolic functions
- Constants
- Gamma function and factorials
- Zeta function
- Bernoulli numbers and polynomials
- Polylogarithms
- Other special functions
- Internals for computing elementary functions
- Vector functions

**acb.h**– complex numbers- Types, macros and constants
- Memory management
- Basic manipulation
- Input and output
- Random number generation
- Precision and comparisons
- Complex parts
- Arithmetic
- Mathematical constants
- Powers and roots
- Exponentials and logarithms
- Trigonometric functions
- Inverse trigonometric functions
- Hyperbolic functions
- Inverse hyperbolic functions
- Rising factorials
- Gamma function
- Zeta function
- Polylogarithms
- Arithmetic-geometric mean
- Other special functions
- Vector functions

## 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.

**arb_poly.h**– polynomials over the real numbers- Types, macros and constants
- Memory management
- Basic manipulation
- Conversions
- Input and output
- Random generation
- Comparisons
- Bounds
- Arithmetic
- Composition
- Evaluation
- Product trees
- Multipoint evaluation
- Interpolation
- Differentiation
- Transforms
- Powers and elementary functions
- Gamma function and factorials
- Zeta function
- Root-finding
- Other special polynomials

**acb_poly.h**– polynomials over the complex numbers- Types, macros and constants
- Memory management
- Basic properties and manipulation
- Input and output
- Random generation
- Comparisons
- Conversions
- Bounds
- Arithmetic
- Composition
- Evaluation
- Product trees
- Multipoint evaluation
- Interpolation
- Differentiation
- Transforms
- Elementary functions
- Gamma function
- Power sums
- Zeta function
- Other special functions
- Root-finding

## Matrices¶

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

## Higher mathematical functions¶

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

**acb_hypgeom.h**– hypergeometric functions of complex variables- Convergent series
- Asymptotic series
- Generalized hypergeometric function
- Confluent hypergeometric functions
- Error functions and Fresnel integrals
- Bessel functions
- Airy functions
- Incomplete gamma and beta functions
- Exponential and trigonometric integrals
- Gauss hypergeometric function
- Orthogonal polynomials and functions
- Dilogarithm

**arb_hypgeom.h**– hypergeometric functions of real variables**acb_elliptic.h**– elliptic integrals and functions of complex variables**acb_modular.h**– modular forms of complex variables**dirichlet.h**– Dirichlet characters**acb_dirichlet.h**– Dirichlet L-functions, zeta functions, and related functions**bernoulli.h**– support for Bernoulli numbers**hypgeom.h**– support for hypergeometric series**partitions.h**– computation of the partition function

## 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.

## 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.