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/