The library provides interval computations. Both intervals of integer and floating-point bounds are supported
Interval computations provide an alternative to traditional numeric computations. The fundamental difference is that interval computations trade result precision for accuracy, while the traditional floating-point computations do accuracy for precision. That is - the result of a traditional floating-point operation has the precision of arguments. The rounding errors are accumulated as accuracy loss. Differently to this the result of an interval operation suffers no accuracy loss, in the sense that the mathematical outcome of the operation is contained by the result interval. Rounding errors in interval operations are accumulated as the interval width, i.e. as precision loss.
This fundamental property of interval operations yields the extension principle by which numeric operations are extended to the interval ones.
For example consider the operation +. I1=[a, b], I2=[c, d]. + is monotonically ascending, thus Inf is a+c and Sup is b+d and so [a, b]+[c, d]=[a+c, b+d].
Any combination of interval operations maintain the property, but changing order of operations or splitting operations into smaller ones may change the precision of the result (the result interval width). E.g. x2 is not necessarily equal to x*x, still both contain the exact outcome.
Home page: https://www.dmitry-kazakov.de/ada/intervals.htm
Changes log: https://www.dmitry-kazakov.de/ada/intervals.htm#changes_log