\frac{x - lo}{hi - lo}\frac{x}{hi - lo} - \frac{\frac{hi}{lo} + 1}{\mathsf{fma}\left(\frac{hi}{lo}, \frac{hi}{lo}, -1\right)}double f(double lo, double hi, double x) {
double r26900 = x;
double r26901 = lo;
double r26902 = r26900 - r26901;
double r26903 = hi;
double r26904 = r26903 - r26901;
double r26905 = r26902 / r26904;
return r26905;
}
double f(double lo, double hi, double x) {
double r26906 = x;
double r26907 = hi;
double r26908 = lo;
double r26909 = r26907 - r26908;
double r26910 = r26906 / r26909;
double r26911 = r26907 / r26908;
double r26912 = 1.0;
double r26913 = r26911 + r26912;
double r26914 = -1.0;
double r26915 = fma(r26911, r26911, r26914);
double r26916 = r26913 / r26915;
double r26917 = r26910 - r26916;
return r26917;
}



Bits error versus lo



Bits error versus hi



Bits error versus x
Initial program 62.0
rmApplied div-sub62.0
rmApplied clear-num62.0
Simplified1.0
rmApplied flip--1.8
Applied associate-/r/1.8
Simplified1.1
rmApplied associate-*l/1.0
Simplified1.0
Final simplification1.0
herbie shell --seed 2019351 +o rules:numerics
(FPCore (lo hi x)
:name "(/ (- x lo) (- hi lo))"
:precision binary64
:pre (and (< lo -1e+308) (> hi 1e+308))
(/ (- x lo) (- hi lo)))