iRRAM - Exact Arithmetic in C++

Current Version: [iRRAM_2013_01.tar.bz2 (dated 2013-02-28)]

[documentation] [example] [support] [FAQ] [known bugs]

Older Versions: [iRRAM_2008_01.tar.bz2 (dated 2008-12-10)] [iRRAM_2006_02.tar.gz (dated 2006-11-03)] [iRRAM_2005_03.tar.gz (dated 2005-12-08)] [iRRAM_2005_02.tar.gz (dated 2005-11-30)] [iRRAM_2005_01.tar.gz (dated 2005-11-11)] [iRRAM_2004_02.tar.gz (dated 2004-10-11)] [iRRAM_2004_01.tar.gz (dated 2004-01-13)] [iRRAM_2003_08.tar.gz (dated 2003-12-18)] [iRRAM_2003_05.tar.gz (dated 2003-11-15)] [iRRAM_2003_03.tar.gz (presented at RNC5 Lyon)] [snapshot from 2002] [snapshot from 2001] [old version from 2000]

The iRRAM is a C++ package for error-free real arithmetic based on the concept of a Real-RAM. Its capabilities range from ordinary arithmetic over trigonometric functions to linear algebra even with sparse matrices.

A program for the iRRAM is coded in ordinary C++, but may use a special class REAL, that behaves like real numbers without any error. A quite small set of operations is allowed to be used directly with variables of this type: usual arithmetic operations, tests and conversion to/from integer or other types. The programmer may use (almost) all programming methods from C++, like defining own data types (like real matrices or complex numbers, which are already implemented in this way) and functions (even returning real values).

The ability of computing limits of (special) sequences seems to be a unique feature of the iRRAM. The limited scope of algebraic or symbolic computations on real numbers is left as soon as these operators are used. From this point on, Type 2 Theory of Effectivity (TTE) (see CCA Net ) is the best fitting theoretical model.

Additionally, the iRRAM uses the concept of multi-valued functions (again, see CCA Net ).

Related references and links

CCA Net : Computability and Complexity in Analysis Network

GMP : a free library for arbitrary precision arithmetic

MPFR: a library for multiprecision floating-point computations with exact rounding