x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\left(y - x\right) \cdot \frac{z - t}{a - t} + xdouble f(double x, double y, double z, double t, double a) {
double r573816 = x;
double r573817 = y;
double r573818 = r573817 - r573816;
double r573819 = z;
double r573820 = t;
double r573821 = r573819 - r573820;
double r573822 = r573818 * r573821;
double r573823 = a;
double r573824 = r573823 - r573820;
double r573825 = r573822 / r573824;
double r573826 = r573816 + r573825;
return r573826;
}
double f(double x, double y, double z, double t, double a) {
double r573827 = y;
double r573828 = x;
double r573829 = r573827 - r573828;
double r573830 = z;
double r573831 = t;
double r573832 = r573830 - r573831;
double r573833 = a;
double r573834 = r573833 - r573831;
double r573835 = r573832 / r573834;
double r573836 = r573829 * r573835;
double r573837 = r573836 + r573828;
return r573837;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.0 |
|---|---|
| Target | 9.0 |
| Herbie | 11.3 |
Initial program 24.0
Simplified14.3
rmApplied fma-udef14.4
rmApplied div-inv14.4
rmApplied associate-*l*11.4
Simplified11.3
Final simplification11.3
herbie shell --seed 2020033 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< a -1.6153062845442575e-142) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t)))) (if (< a 3.774403170083174e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))