\frac{x - lo}{hi - lo}
-1 \cdot \frac{x}{lo}
(FPCore (lo hi x) :precision binary64 (/ (- x lo) (- hi lo)))
(FPCore (lo hi x) :precision binary64 (* -1.0 (/ x lo)))
double code(double lo, double hi, double x) {
return (x - lo) / (hi - lo);
}
double code(double lo, double hi, double x) {
return -1.0 * (x / lo);
}



Bits error versus lo



Bits error versus hi



Bits error versus x
Results
Initial program 64.0
Taylor expanded in x around inf 51.7
Taylor expanded in hi around 0 51.7
Final simplification51.7
herbie shell --seed 2022127
(FPCore (lo hi x)
:name "(/ (- x lo) (- hi lo))"
:precision binary64
:pre (and (< lo -1e+308) (> hi 1e+308))
(/ (- x lo) (- hi lo)))