\frac{x - lo}{hi - lo}
\frac{x}{hi} + \left(\mathsf{fma}\left(\frac{x}{hi}, \frac{lo}{hi} \cdot \frac{lo}{hi}, \frac{lo}{hi} \cdot \left(\left(-\sqrt[3]{lo} \cdot \sqrt[3]{lo}\right) \cdot \frac{\sqrt[3]{lo}}{hi}\right) - \frac{lo}{hi}\right) - {\left(\frac{lo}{hi}\right)}^{3}\right)
(FPCore (lo hi x) :precision binary64 (/ (- x lo) (- hi lo)))
(FPCore (lo hi x)
:precision binary64
(+
(/ x hi)
(-
(fma
(/ x hi)
(* (/ lo hi) (/ lo hi))
(-
(* (/ lo hi) (* (- (* (cbrt lo) (cbrt lo))) (/ (cbrt lo) hi)))
(/ lo hi)))
(pow (/ lo hi) 3.0))))double code(double lo, double hi, double x) {
return (x - lo) / (hi - lo);
}
double code(double lo, double hi, double x) {
return (x / hi) + (fma((x / hi), ((lo / hi) * (lo / hi)), (((lo / hi) * (-(cbrt(lo) * cbrt(lo)) * (cbrt(lo) / hi))) - (lo / hi))) - pow((lo / hi), 3.0));
}



Bits error versus lo



Bits error versus hi



Bits error versus x
Initial program 62.0
Taylor expanded in hi around inf 64.0
Simplified51.9
Taylor expanded in lo around inf 51.9
Applied *-un-lft-identity_binary6451.9
Applied add-cube-cbrt_binary6451.9
Applied times-frac_binary6451.9
Applied cancel-sign-sub-inv_binary6451.9
Applied distribute-rgt-in_binary6451.9
Final simplification51.9
herbie shell --seed 2021344
(FPCore (lo hi x)
:name "(/ (- x lo) (- hi lo))"
:precision binary64
:pre (and (< lo -1e+308) (> hi 1e+308))
(/ (- x lo) (- hi lo)))