Ball arithmetic, also known as mid-rad interval arithmetic, is an extension of floating-point arithmetic in which an error bound is attached to each variable. This allows doing rigorous computations over the real numbers, while avoiding the overhead of traditional (inf-sup) interval arithmetic at high precision, and eliminating much of the need for time-consuming and bug-prone manual error analysis associated with standard floating-point arithmetic. (See for example [Hoe2009].)
Other implementations of ball arithmetic include iRRAM and Mathemagix. In contrast to those systems, Arb is more focused on low-level arithmetic and computation of transcendental functions needed for number theory. Arb also differs in some technical aspects of the implementation.
Arb 2.x contains:
Arb 1.x used a different set of numerical base types (fmpr, fmprb and fmpcb). These types had a slightly simpler internal representation, but generally had worse performance. Almost all methods for the Arb 1.x types have now been ported to faster equivalents for the Arb 2.x types. The last version to include both the Arb 1.x and Arb 2.x types and methods was Arb 2.2. As of Arb 2.3, only a small set of fmpr and fmprb methods are left for fallback and testing purposes.
Planned features include more transcendental functions and more extensive polynomial and matrix functionality, as well as further optimizations.
Arb uses GMP / MPIR and FLINT for the underlying integer arithmetic and other functions. The code conventions borrow from FLINT, and the project might get merged back into FLINT when the code stabilizes in the future. Arb also uses MPFR for testing purposes and for evaluation of some functions.