These predicates use hardware (SSE) based interval arithmetic based on the algorithms presented in (1). They are intended to be used as a filter before resorting to slower exact computation.
- These routines return Nothing if the result could not be determined exactly from the calculated interval.
- Each call toggles the SSE rounding mode to -infinity and back.
- All computations are done in Double precision.
- Rewrite specializations are in place for Float and Double that greatly reduce allocations compared to Real. Using anything but Float or Double is probably absurdly slow thanks to realToFrac.
- For performance reasons we assume CDouble == Double.
- BRANIMIR LAMBOV. "INTERVAL ARITHMETIC USING SSE-2"
Test if p3 is within the closed interval specified by [p1,p2]
Test the relation of a point to the circle formed by (p1..p3). (p1..p3) must be in counterclockwise order. Result: GT=inside, EQ=border, LT=outside