Efficient exact arithmetic for computational geometry
SCG '93 Proceedings of the ninth annual symposium on Computational geometry
On properties of floating point arithmetics: numerical stability and the cost of accurate computations
The quickhull algorithm for convex hulls
ACM Transactions on Mathematical Software (TOMS)
IEEE Transactions on Computers
The art of computer programming, volume 2 (3rd ed.): seminumerical algorithms
The art of computer programming, volume 2 (3rd ed.): seminumerical algorithms
Look — a Lazy Object-Oriented Kernel for geometric computation
Proceedings of the sixteenth annual symposium on Computational geometry
Interval arithmetic yields efficient dynamic filters for computational geometry
Discrete Applied Mathematics - Special issue 14th European workshop on computational geometry CG'98 Selected papers
Automatic generation of staged geometric predicates
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Triangle: Engineering a 2D Quality Mesh Generator and Delaunay Triangulator
FCRC '96/WACG '96 Selected papers from the Workshop on Applied Computational Geormetry, Towards Geometric Engineering
Multiplications of Floating Point Expansions
ARITH '99 Proceedings of the 14th IEEE Symposium on Computer Arithmetic
Delaunay refinement mesh generation
Delaunay refinement mesh generation
Journal of Functional Programming
Algorithm engineering: bridging the gap between algorithm theory and practice
Algorithm engineering: bridging the gap between algorithm theory and practice
Hi-index | 0.00 |
Algorithms in Computational Geometry and Computer Aided Design are often developed for the Real RAM model of computation, which assumes exactness of all the input arguments and operations. In practice, however, the exactness imposes tremendous limitations on the algorithms—even the basic operations become uncomputable, or prohibitively slow. In some important cases, however, the computations of interest are limited to determining the sign of polynomial expressions. In such circumstances, a faster approach is available: one can evaluate the polynomial in floating-point first, together with some estimate of the rounding error, and fall back to exact arithmetic only if this error is too big to determine the sign reliably. A particularly efficient variation on this approach has been used by Shewchuk in his robust implementations of Orient and InSphere geometric predicates.We extend Shewchuk's method to arbitrary polynomial expressions. The expressions are given as programs in a suitable source language featuring basic arithmetic operations of addition, subtraction, multiplication and squaring, which are to be perceived by the programmer as exact. The source language also allows for anonymous functions; the use of such functions enables the common functional programming technique of staging. The method is presented formally through several judgments that govern the compilation of the source expression into target code, which is then easily transformed into SML or, in case of single-stage expressions, into C.