x + \left(y - x\right) \cdot \frac{z}{t}\mathsf{fma}\left(y - x, \frac{z}{t}, x\right)double f(double x, double y, double z, double t) {
double r506733 = x;
double r506734 = y;
double r506735 = r506734 - r506733;
double r506736 = z;
double r506737 = t;
double r506738 = r506736 / r506737;
double r506739 = r506735 * r506738;
double r506740 = r506733 + r506739;
return r506740;
}
double f(double x, double y, double z, double t) {
double r506741 = y;
double r506742 = x;
double r506743 = r506741 - r506742;
double r506744 = z;
double r506745 = t;
double r506746 = r506744 / r506745;
double r506747 = fma(r506743, r506746, r506742);
return r506747;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 1.8 |
|---|---|
| Target | 2.0 |
| Herbie | 1.8 |
Initial program 1.8
Simplified1.8
Final simplification1.8
herbie shell --seed 2020033 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"
:precision binary64
:herbie-target
(if (< (* (- y x) (/ z t)) -1013646692435.887) (+ x (/ (- y x) (/ t z))) (if (< (* (- y x) (/ z t)) -0.0) (+ x (/ (* (- y x) z) t)) (+ x (/ (- y x) (/ t z)))))
(+ x (* (- y x) (/ z t))))