Formally certified floating-point filters for homogeneous geometric predicates
read more
Citations
Certification of bounds on expressions involving rounded operators
Certification of bounds on expressions involving rounded operators
Certifying the Floating-Point Implementation of an Elementary Function Using Gappa
Emulation of a FMA and Correctly Rounded Sums: Proved Algorithms Using Rounding to Odd
De l'arithmétique d'intervalles à la certification de programmes
References
Interval methods for systems of equations
Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates,
Static analysis yields efficient exact integer arithmetic for computational geometry
An American National Standard- IEEE Standard for Binary Floating-Point Arithmetic
Related Papers (5)
Frequently Asked Questions (12)
Q2. What is the important characteristic of a combinatorial geometry algorithm?
In order to derive a combinatorial, discrete, structure from a set of numerical inputs, a set of functions are used, called geometric predicates, which evaluate the relative positions of a few geometric objects, such as the orientation of three points in the plane.
Q3. What is the main quality of the floating-point filter?
But its main quality does not lie in its speed, it lies in its robustness: floating-point underflow and overflow are taken into account, and the code is still valid on hardware architectures that suffer from double rounding.
Q4. Why is the cost of this slower method amortized?
The cost of this slower method is amortized due to the fact that the filter part is expected to be able to determine the exact result with a high probability.
Q5. What is the main quality of a floating-point algorithm?
Once some pitfalls of floating-point arithmetic like underflows, overflows, or double rounding are set aside, it becomes quite easy to design an algorithm which is not impacted by floating-point rounding errors.
Q6. What is the equality det in the formula?
The equality det <homogen80x>= pqx * pry - pqy * prx is just syntactic sugar to express that det denotes ◦(◦(pqx · pry)− ◦(pqy · prx)).
Q7. What is the interval for a′ A?
Thanks to the property described in Section 2.2, if |A| is the magnitudemax(|a|, |a|) of the interval A = [a, a], and if f(m,n) · |A| · 0 ≥ η0, then◦(a)− a ∈ f(m,n) · [−|A| · 0, |A| · 0]This error interval [−|A| · 0, |A| · 0] is an interval enclosing ◦(a′)−a′ for a′ ∈ A, but it is generally not the sharpest.
Q8. What is the naive implementation of the orientation-2 predicate?
Naive implementationAlgorithm 1 Floating-point orientation-2 naive implementation double pqx = qx - px, pqy = qy - py;double prx = rx - px, pry = ry - py;double det = pqx * pry - pqy * prx;if (det > 0) return POSITIVE;if (det < 0) return NEGATIVE;return ZERO;Algorithm 1 shows a naive implementation of the orientation-2 predicate.
Q9. How many lines long is the orient2 predicate?
4.2. Generating Gappa codeAs shown by Algorithm 3, the file describing the orient2 predicate for Gappa can be written by hand, it is only a few lines long.
Q10. How does Gappa certify the value of z?
More precisely, the authors will ask Gappa to bound the expression z̃ − z knowing that the four floating-point elements of the determinant are between −1 and 1.
Q11. What are the arguments that the authors have detailed for the 2D orientation predicate?
Hence they are homogeneous expressions, and the arguments that the authors have detailed for the 2D orientation predicate apply to the higher dimensional versions.
Q12. does gappa know about the induction the authors are performing?
Gappa is a generic tool for bounding expressions involving rounding operators, so it does not know about the induction the authors are performing.