A modified staggered correction arithmetic with enhanced
accuracy and very wide exponent range (lx_interval)
========================================================
Copyright (C) F. Blomquist, W. Hofschuster, and W. Kraemer
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Installation (Prerelease 0.9.0)
===============================
1. Make sure you have C-XSC library (version 2.2.4 (!) or higher)
2. Unpack the sources lx_interval-0-9-0.tgz :
tar xvfz lx_interval-0-9-0.tgz
3. Edit the file Makefile and set the correct path to your
installation of the C-XSC library
4. Compile all sources:
cd ./lx_interval-0-9-0;
make all
A library liblxari and some example programs are build
If you want to build additionally about 90 test programs
in the subdirectory test:
make test
Using lx_interval with your own programs
========================================
When you compile and link code using C-XSC routines you have to
define the C-XSC include path and the C-XSC library path.
Additionaly you have to link the library liblxari.so:
g++ -I -L -o prog prog.cpp -lcxsc -llxari
Short Description
=================
The staggered correction arithmetic is based on accurate
scalar product computations of floating point vectors.
A staggered correction number is given as the (exact) sum
of the components of a list of floating-point numbers
(components of a floating-point vector).
Thus the maximum precision of arithmetical operations
depends strongly on the exponent range of the floating-point
screen. Staggered correction numbers close to the
underflow range are typically not as accurate as numbers
with larger exponents. For the IEEE double precision format
the range is about 4.9 10E-324 < |double| < 1.7 10E+308. Thus,
up to 630 (decimal) mantissa digits may be handled
using staggerd precision variables.
To get high accuracy in numerical calculations (intermediate)
underflow and/or overflow situations must be avoided, i.e.
an appropriate scaling of the operands of arithmetic operations
is necessary. To this end we represent our modified staggered number
as a pair (e, x). We refer to such pairs as extended staggered numbers.
The integer e denotes an exponent with repect to the base 2 and
x denotes an ordinary staggerd number (i.e. a vector of
floating-point numbers). The value v of the modified staggered
variable (e,x) is v = (e,x) := 2**e * sum(x). Here, sum(x)
means the exact sum of all floating-point components
of the staggered variabe x. The pair-representation allows the
handling of very small and very large numbers:
1.3E-487564, 4.1E9999999, or numbers with even larger
exponents may be used in numerical calculations.
The new package offers real interval and complex interval arithmetic
operations and also a rather complete set of mathematical functions for the
new data types lx_interval (extended real staggered intervals) and lx_cinterval
(extended complex staggerd intervals). The trigonometric functions, the inverse
trigonometric functions, the hyperbolic and the inverse hyperbolic
functions as well as several other functions are provided
for (rectangular) extended complex staggered intervals.
Questions, Suggestions, Problems, Solutions are welcome:
========================================================
Wissenschaftliches Rechnen/Softwaretechnologie
Fachbereich C (Mathematik und Naturwissenschaften)
Bergische Universitaet Wuppertal
Gaussstrasse 20
D-42097 Wuppertal
e-mail: {blomquist,kraemer,hofschuster}@math.uni-wuppertal.de
C-XSC-Homepage: http://www.math.uni-wuppertal.de/~xsc/