The Core Library is based on a novel number core.
This library provides an
API which defines four levels of numerical accuracy. The main intent of
this implementation was to support the Exact Geometric Computation
(EGC) approach to numerically robust algorithms. Nevertheless, it is
quite general and can be used in any other application where numerical
accuracy must be guaranteed.
Our library provides users with a simple and natural numerical API to
support the following concepts of accuracy:
- LEVEL I: Machine
Accuracy. This can be identified with the IEEE standard.
- LEVEL II: Arbitrary
Accuracy. If you specify 200 bits of
accuracy (in relative or absolute terms), this guarantees that you will
not experience overflow or underflow until you exceed 200 bits. This is
similar to what any computer algebra system (say, Maple) gives you.
- LEVEL III: Guaranteed
Accuracy. This is the novel part:
thus, you can specify 1 relative bit or 10 absolute bits of accuracy at
this level. Note that 1 relative bit ensures that you get exact signs
of real numbers, the critical idea in Exact Geometric Computation.
Every C/C++ program (perhaps with small changes) which can access any
of the first 3 levels. This property has many applications, especially
for debugging. A program written for Level IV accuracy can also access
any of the lower levels.
- LEVEL IV: Mixed
Accuracy. This localizes the the previous
accuracy levels to individual variables, for better control of accuracy