edit the overview

This commit is contained in:
Fredrik Johansson 2016-02-28 19:19:05 +01:00
parent 20627c2f2e
commit 2b701dd92f

View file

@ -5,22 +5,35 @@ Feature overview
Ball arithmetic, also known as mid-rad interval arithmetic, is an Ball arithmetic, also known as mid-rad interval arithmetic, is an
extension of floating-point arithmetic in which an error bound is extension of floating-point arithmetic in which an error bound is
attached to each variable. This allows doing rigorous computations attached to each variable. This allows computing rigorously with
over the real numbers, while avoiding the overhead of real and complex numbers.
traditional (inf-sup) interval arithmetic at high precision,
and eliminating much of the need for time-consuming With plain floating-point arithmetic, the user must do an error analysis
and bug-prone manual error analysis associated with to guarantee that results are correct. Manual error analysis is time-consuming
standard floating-point arithmetic. (See for example [Hoe2009]_.) and bug-prone. Ball arithmetic effectively makes error analysis
automatic.
In traditional (inf-sup) interval arithmetic, both endpoints of an interval
`[a,b]` are full-precision numbers, which makes interval arithmetic
twice as expensive as floating-point arithmetic.
In ball arithmetic, only the midpoint *m* of an interval `[m \pm r]`
is a full-precision number, and a few bits suffice for the radius *r*.
At high precision, ball arithmetic is therefore not more expensive than
plain floating-point arithmetic.
Joris van der Hoeven's paper [Hoe2009]_ is a good introduction to the subject.
Other implementations of ball arithmetic include Other implementations of ball arithmetic include
`iRRAM <http://irram.uni-trier.de/>`_ and `iRRAM <http://irram.uni-trier.de/>`_ and
`Mathemagix <http://www.mathemagix.org/www/mmdoc/doc/html/main/index.en.html>`_. `Mathemagix <http://www.mathemagix.org/www/mmdoc/doc/html/main/index.en.html>`_.
In contrast to those systems, Arb is more focused on low-level arithmetic Arb differs from earlier implementations in technical aspects of the
and computation of transcendental functions needed for implementation, which makes certain computations more efficient.
number theory. Arb also differs in some technical aspects of It also provides a more comprehensive low-level interface, giving
the implementation. the user full access to the internals. Finally, it implements a wider
range of transcendental functions, covering a large portion of the
special functions in standard reference works such as [NIST2012]_.
Arb 2.x contains: Arb contains:
* A module (:ref:`arf <arf>`) for correctly rounded arbitrary-precision * A module (:ref:`arf <arf>`) for correctly rounded arbitrary-precision
floating-point arithmetic. Arb's floating-point numbers have a few special floating-point arithmetic. Arb's floating-point numbers have a few special
@ -35,11 +48,7 @@ Arb 2.x contains:
implemented as an *arf* midpoint and a *mag* radius. implemented as an *arf* midpoint and a *mag* radius.
* A module (:ref:`acb <acb>`) for complex numbers in rectangular form, * A module (:ref:`acb <acb>`) for complex numbers in rectangular form,
represented as pairs real balls. represented as pairs of real balls.
* Functions for fast high-precision evaluation of various
mathematical constants and special functions, implemented using
ball arithmetic with rigorous error bounds.
* Modules (:ref:`arb_poly <arb-poly>`, :ref:`acb_poly <acb-poly>`) * Modules (:ref:`arb_poly <arb-poly>`, :ref:`acb_poly <acb-poly>`)
for polynomials or power series over the real and complex numbers, for polynomials or power series over the real and complex numbers,
@ -52,22 +61,21 @@ Arb 2.x contains:
implemented using balls as coefficients. implemented using balls as coefficients.
At the moment, only rudimentary linear algebra operations are provided. At the moment, only rudimentary linear algebra operations are provided.
* Functions for high-precision evaluation of various
mathematical constants and special functions, implemented using
ball arithmetic with rigorous error bounds.
Arb 1.x used a different set of numerical base types (*fmpr*, *fmprb* Arb 1.x used a different set of numerical base types (*fmpr*, *fmprb*
and *fmpcb*). These types had a slightly simpler internal representation, and *fmpcb*). These types had a slightly simpler internal representation,
but generally had worse performance. Almost all methods for the Arb 1.x types but generally had worse performance. All methods for the Arb 1.x types
have now been ported to faster equivalents for the Arb 2.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 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* was Arb 2.2. As of Arb 2.9, only a small set of *fmpr*
methods are left for fallback and testing purposes. 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 <http://mpir.org>`_ / `MPIR <http://mpir.org>`_ and Arb uses `GMP <http://mpir.org>`_ / `MPIR <http://mpir.org>`_ and
`FLINT <http://flintlib.org/>`_ `FLINT <http://flintlib.org/>`_
for the underlying integer arithmetic and other functions. for the underlying integer arithmetic and various utility 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 <http://mpfr.org/>`_ for testing purposes Arb also uses `MPFR <http://mpfr.org/>`_ for testing purposes
and for evaluation of some functions. and internally to evaluate some functions.