Arbitrary precision floating point classes for Sather
What's the status of my work?
I'm currently working on a set of floating point classes. There is no released
code yet, but I'm very interested in your suggestions and comments about my design
decisions described below. Are things missing? Would you like things different?
What would you need them for (I mean the classes :-)
Please mail me!
Of course, if I receive a couple of mails "Wow! I've been waiting for this for years!"
that'll improve my spirits greatly. :-)
All classes will use INTI for the representation of the mantissa. Thus, they should
run on everyone's Sather-System. If you are need in speed, you can use my faster
INTI-replacement based on the GNU Multiple Precision Library.
- A floating point class with an arbitrary precision. The actual precision of
newly created numbers (and of the results of operations) will be taken from a shared
attribute of FLTIA. It is meant to be as IEEE 754 like as possible.
- FLTI24, FLTI48 etc.
- These are derived from FLTI. The only difference is that their precision is
fixed at 24 / 48 / whatever bits. Classes with different precisions can be easily
derived, if necessary.
- A "dot precision" class, i.e. a class with which you can calculate sums and
products without rounding error. This is meant for the exact calculation of
scalarproducts etc. Not meant for general use, because the mantissa length can grow
quickly beyond all bounds. It will only contain a few operations, which can be calculated
without rounding, i.e. +,+,* and conversions to other FLTIs.
- A "restricted precision class". This means the results of operations will only
have the precision they deserve. i.e. if you multiply a 64bit number and a 256bit one,
the result will be only 64 bit. Thus you'll have probably a bit faster calculations and
some information about the precision of the result as well. I'm not sure if I'll do this one.
- A fixed point class. For simplicity FIX will not be IEEE-like but for the rounding modes, i.e. there
will be no signed zeroes, Infinity and NaNs. But it will be usable for INTERVAL.
The fixed point numbers will basically be integers scaled by a fixed power of 2.
- An interval class. This class can be parameterized with any of the above classes. It represents an
interval [u,o] of numbers. Thus, if you use INTERVAL, you'll get exact bounds
for the result. Should be very useful for computer assisted proofs, etc.
Hans-Peter Störr, Aug 24 1995