Can't mode bit shuffling be avoided by using negated versions of the
desired quantites?
Interval x { double hi, lo };
Interval(max,min) {hi = max; lo = -min; }
add(x,y) { hi = (x.hi+y.hi)/CEIL; lo = (x.lo+y.lo)/CEIL; }
negate(x) { hi = x.lo; lo = x.hi; }
Multiply is still a morass, though.
Bob