Katana VentraIP

Interval arithmetic

Interval arithmetic (also known as interval mathematics; interval analysis or interval computation) is a mathematical technique used to mitigate rounding and measurement errors in mathematical computation by computing function bounds. Numerical methods involving interval arithmetic can guarantee relatively reliable and mathematically correct results. Instead of representing a value as a single number, interval arithmetic or interval mathematics represents each value as a range of possibilities.

Mathematically, instead of working with an uncertain real-valued variable , interval arithmetic works with an interval that defines the range of values that can have. In other words, any value of the variable lies in the closed interval between and . A function , when applied to , produces an interval which includes all the possible values for for all .


Interval arithmetic is suitable for a variety of purposes; the most common use is in scientific works, particularly when the calculations are handled by software, where it is used to keep track of rounding errors in calculations and of uncertainties in the knowledge of the exact values of physical and technical parameters. The latter often arise from measurement errors and tolerances for components or due to limits on computational accuracy. Interval arithmetic also helps find guaranteed solutions to equations (such as differential equations) and optimization problems.

:

Addition

:

Subtraction

:

Multiplication

:

where

Division

Complex interval arithmetic[edit]

An interval can be defined as a set of points within a specified distance of the center, and this definition can be extended from real numbers to complex numbers.[2] Another extension defines intervals as rectangles in the complex plane. As is the case with computing with real numbers, computing with complex numbers involves uncertain data. So, given the fact that an interval number is a real closed interval and a complex number is an ordered pair of real numbers, there is no reason to limit the application of interval arithmetic to the measure of uncertainties in computations with real numbers.[3] Interval arithmetic can thus be extended, via complex interval numbers, to determine regions of uncertainty in computing with complex numbers. One can either define complex interval arithmetic using rectangles or using disks, both with their respective advantages and disadvantages.[3]


The basic algebraic operations for real interval numbers (real closed intervals) can be extended to complex numbers. It is therefore not surprising that complex interval arithmetic is similar to, but not the same as, ordinary complex arithmetic.[3] It can be shown that, as is the case with real interval arithmetic, there is no distributivity between the addition and multiplication of complex interval numbers except for certain special cases, and inverse elements do not always exist for complex interval numbers.[3] Two other useful properties of ordinary complex arithmetic fail to hold in complex interval arithmetic: the additive and multiplicative properties, of ordinary complex conjugates, do not hold for complex interval conjugates.[3]


Interval arithmetic can be extended, in an analogous manner, to other multidimensional number systems such as quaternions and octonions, but with the expense that we have to sacrifice other useful properties of ordinary arithmetic.[3]

History[edit]

Interval arithmetic is not a completely new phenomenon in mathematics; it has appeared several times under different names in the course of history. For example, Archimedes calculated lower and upper bounds 223/71 < π < 22/7 in the 3rd century BC. Actual calculation with intervals has neither been as popular as other numerical techniques nor been completely forgotten.


Rules for calculating with intervals and other subsets of the real numbers were published in a 1931 work by Rosalind Cicely Young.[9] Arithmetic work on range numbers to improve the reliability of digital systems was then published in a 1951 textbook on linear algebra by Paul S. Dwyer;[10] intervals were used to measure rounding errors associated with floating-point numbers. A comprehensive paper on interval algebra in numerical analysis was published by Teruo Sunaga (1958).[11]


The birth of modern interval arithmetic was marked by the appearance of the book Interval Analysis by Ramon E. Moore in 1966.[12][13] He had the idea in spring 1958, and a year later he published an article about computer interval arithmetic.[14] Its merit was that starting with a simple principle, it provided a general method for automated error analysis, not just errors resulting from rounding.


Independently in 1956, Mieczyslaw Warmus suggested formulae for calculations with intervals,[15] though Moore found the first non-trivial applications.


In the following twenty years, German groups of researchers carried out pioneering work around Ulrich W. Kulisch[16][17] and Götz Alefeld[18] at the University of Karlsruhe and later also at the Bergische University of Wuppertal. For example, Karl Nickel explored more effective implementations, while improved containment procedures for the solution set of systems of equations were due to Arnold Neumaier among others. In the 1960s, Eldon R. Hansen dealt with interval extensions for linear equations and then provided crucial contributions to global optimization, including what is now known as Hansen's method, perhaps the most widely used interval algorithm.[5] Classical methods in this often have the problem of determining the largest (or smallest) global value, but could only find a local optimum and could not find better values; Helmut Ratschek and Jon George Rokne developed branch and bound methods, which until then had only applied to integer values, by using intervals to provide applications for continuous values.


In 1988, Rudolf Lohner developed Fortran-based software for reliable solutions for initial value problems using ordinary differential equations.[19]


The journal Reliable Computing (originally Interval Computations) has been published since the 1990s, dedicated to the reliability of computer-aided computations. As lead editor, R. Baker Kearfott, in addition to his work on global optimization, has contributed significantly to the unification of notation and terminology used in interval arithmetic.[20]


In recent years work has concentrated in particular on the estimation of preimages of parameterized functions and to robust control theory by the COPRIN working group of INRIA in Sophia Antipolis in France.[21]

Implementations[edit]

There are many software packages that permit the development of numerical applications using interval arithmetic.[22] These are usually provided in the form of program libraries. There are also C++ and Fortran compilers that handle interval data types and suitable operations as a language extension, so interval arithmetic is supported directly.


Since 1967, Extensions for Scientific Computation (XSC) have been developed in the University of Karlsruhe for various programming languages, such as C++, Fortran, and Pascal.[23] The first platform was a Zuse Z23, for which a new interval data type with appropriate elementary operators was made available. There followed in 1976, Pascal-SC, a Pascal variant on a Zilog Z80 that it made possible to create fast, complicated routines for automated result verification. Then came the Fortran 77-based ACRITH-XSC for the System/370 architecture (FORTRAN-SC), which was later delivered by IBM. Starting from 1991 one could produce code for C compilers with Pascal-XSC; a year later the C++ class library supported C-XSC on many different computer systems. In 1997, all XSC variants were made available under the GNU General Public License. At the beginning of 2000, C-XSC 2.0 was released under the leadership of the working group for scientific computation at the Bergische University of Wuppertal to correspond to the improved C++ standard.


Another C++-class library was created in 1993 at the Hamburg University of Technology called Profil/BIAS (Programmer's Runtime Optimized Fast Interval Library, Basic Interval Arithmetic), which made the usual interval operations more user-friendly. It emphasized the efficient use of hardware, portability, and independence of a particular presentation of intervals.


The Boost collection of C++ libraries contains a template class for intervals. Its authors are aiming to have interval arithmetic in the standard C++ language.[24]


The Frink programming language has an implementation of interval arithmetic that handles arbitrary-precision numbers. Programs written in Frink can use intervals without rewriting or recompilation.


GAOL[25] is another C++ interval arithmetic library that is unique in that it offers the relational interval operators used in interval constraint programming.


The Moore library[26] is an efficient implementation of interval arithmetic in C++. It provides intervals with endpoints of arbitrary precision and is based on the concepts feature of C++.


The Julia programming language[27] has an implementation of interval arithmetics along with high-level features, such as root-finding (for both real and complex-valued functions) and interval constraint programming, via the ValidatedNumerics.jl package.[28]


In addition, computer algebra systems, such as FriCAS, Mathematica, Maple, Maxima (software)[29] and MuPAD, can handle intervals. A Matlab extension Intlab[30] builds on BLAS routines, and the Toolbox b4m makes a Profil/BIAS interface.[30][31] Moreover, the Software Euler Math Toolbox includes an interval arithmetic.


A library for the functional language OCaml was written in assembly language and C.[32]

IEEE 1788 standard[edit]

A standard for interval arithmetic, IEEE Std 1788-2015, has been approved in June 2015.[33] Two reference implementations are freely available.[34] These have been developed by members of the standard's working group: The libieeep1788[35] library for C++, and the interval package[36] for GNU Octave.


A minimal subset of the standard, IEEE Std 1788.1-2017, has been approved in December 2017 and published in February 2018. It should be easier to implement and may speed production of implementations.[37]

Conferences and workshops[edit]

Several international conferences or workshops take place every year in the world. The main conference is probably SCAN (International Symposium on Scientific Computing, Computer Arithmetic, and Verified Numerical Computation), but there is also SWIM (Small Workshop on Interval Methods), PPAM (International Conference on Parallel Processing and Applied Mathematics), REC (International Workshop on Reliable Engineering Computing).

Affine arithmetic

(Interval Laboratory)

INTLAB

Automatic differentiation

Multigrid method

Monte-Carlo simulation

Interval finite element

Fuzzy number

Significant figures

(KAA)

Karlsruhe Accurate Arithmetic

Unum

Hayes, Brian (November–December 2003). (PDF). American Scientist. 91 (6). Sigma Xi: 484–488. doi:10.1511/2003.6.484.

"A Lucid Interval"

Wippermann, Hans-Wilm (1968) [1967-06-15, 1966]. "Definition von Schrankenzahlen in Triplex-ALGOL". (in German). 3 (2). Karlsruhe, Germany: Springer: 99–109. doi:10.1007/BF02277452. ISSN 0010-485X. S2CID 36685400. (11 pages) (NB. About Triplex-ALGOL Karlsruhe, an ALGOL 60 (1963) implementation with support for triplex numbers.)

Computing

Interval arithmetic (Wolfram Mathworld)

Validated Numerics for Pedestrians

University of Vienna

Interval Methods from Arnold Neumaier

SWIM (Summer Workshop on Interval Methods)

International Conference on Parallel Processing and Applied Mathematics

Archived 2020-01-30 at the Wayback Machine, Hamburg University of Technology

INTLAB, Institute for Reliable Computing

Ball arithmetic by Joris van der Hoeven

kv - a C++ Library for Verified Numerical Computation

kv

Arb - a C library for arbitrary-precision ball arithmetic

arb

on GitHub

JuliaIntervals