[ Download ]
[ Theory ]
[ Bugs ]
[ License ]
[ Examples ]
[ Home ]
The SEA home page
Simple Error Arithmetic with Fortran 90/95
Top page
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.
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.
GNU Fortran homepage
g95 homepage,
on SourceForge
Co-Array Fortran
Open MP,
Home page,
Tutorial