Open sheaf opened 5 months ago
The paper "Fast and Correct SIMD Algorithms for Interval Arithmetic" contains more details. I believe those algorithms are implemented in the GAOL C++ library.
I think that if we really want to make this efficient, we would need to store intervals directly in an xmm register, e.g. using the DoubleX2#
type. That's LLVM-only for now unfortunately, but I would be interested in seeing the potential performance benefits.
If we internally represent the interval
[a,b]
as a pair(a, -b)
in which the supremum has been negated, then all interval arithmetic computations can be done using only downwards rounding (avoiding the need to switch rounding modes).(Perhaps you are already using this trick in this library, in which case I apologise.)