This is pretty cool. Writing a robust set of geometric predicates
requires quite an attention to detail.
Some questions:
Restricting to the float range 1.0<=x<2.0 essentially makes the input
a fixed point representation, with fixed point scaling factor eps(1.0)
= 2.220446049250313e-16. How does this compare to telling the user to
rescale their variables onto an integer lattice? Using an integer
lattice arguably exposes the exact nature of the rescaling a little
more clearly though it might just be a pain to work with.
I expect that rescaling a set of points fails to preserve geometric
predicates between them. If so, a comparison to CGAL performance may
not be entirely fair if they keep their vertices in the original
position. Having said that, I think it's a totally practical tradeoff
- one that I'd certainly be willing to make for a bit of extra speed.
~Chris