Last update: October 2006
Optimized only for Firefox 3 on CRT!
Simple Error Arithmetic in f95
SEA home page
Update (2011)
Introduction
SEA is an experimental software package which allows
easy modification of Fortran 90/95 programs to compute
error bounds for all results. The main aim of SEA is
however to explore new ideas and techniques in this
practical field.
SEA has developed from the old "err.f90" module set.
The old modules were yet another simple minded
implementation of Interval Arithmetic (IA). Since IA
is not a satisfactory practical solution SEA looks
now in other directions.
IA deals with bounds on results but we would like to
deal with measures of dispersion. It doesn't mean we
don't suffer still from the same diseases as IA:
correlated terms, coffins and domain splitting at
singularities.
What we do
The Fortran 95 modules included do the following:
- Declare new data types, e.g. a number with an associated
error bound.
Example: "|1.0,0.1|", is the number "1.0" with error
bound "0.1". This symbol represents the range of real
numbers between "0.9" and "1.1".
- Perform an "overloading" of all operators and intrinsic
functions, so that ordinary Fortran 90 code will perform
the required error analytical operations, instead of the
ordinary operations.
Example: the code line "z = x / y", given "x" and "y"
with error bounds, will now automatically perform error
analysis and find the error bounds of the result.
The results of such a computation may look like:
x = |1.00000E+000,1.00000E-001|
y = |1.00000E+000,1.00000E-001|
x/y = |1.02020E+000,2.02020E-001|
- Provide convenient input/output facilities.
The IO library does its own input buffering and
scanning in order to implement non-advancing IO.
- Uses interesting new algorithms, e.g. to compute
minima and maxima of sin() inside a given interval.
- Provides a testbed for new ideas, for example:
- Precision loss warnings (ok, this is an old
idea but our implementation is new).
- Rounding error decreasing by representing
numbers as a sum of two floating points,
the first the result of the last operation
and the second its "residue". This is a
generalization of compensated summation.
If possible we transparently compute
intermediaries in twice the precision.
- Workarounds the correlated terms problem,
e.g. direct computation of low order polynomials.
- 3-value arithmetic with BSA. In development.
- Analyzing input to find the error range
(the decimal spacing).
See the TODO file for an updated
list of ideas tested.
Useful links
- William Kahan
- How Futile are Mindless Assessments of Roundoff
in Floating-Point Computation ?
(PDF)
- See section 13 on page 49/56 on the bloated coffins
of interval arithmetics
- Ferson, Kreinovich, Hajagos, Oberkampf and Ginzburg
- Experimental Uncertainty Estimation and Statistics for
Data Having Interval Uncertainty
(PDF)
- Wikipedia
- Propagation of uncertainty
(HTML)
- Wikipedia
- List of uncertainty propagation software
(HTML)
- Wikipedia
- Taylor expansions for the moments of functions of random variables
(HTML)
- Wikipedia
- Automatic differentiation
(HTML)