x + \left(y - x\right) \cdot \frac{z}{t}x + \left(y - x\right) \cdot \frac{z}{t}double f(double x, double y, double z, double t) {
double r29954854 = x;
double r29954855 = y;
double r29954856 = r29954855 - r29954854;
double r29954857 = z;
double r29954858 = t;
double r29954859 = r29954857 / r29954858;
double r29954860 = r29954856 * r29954859;
double r29954861 = r29954854 + r29954860;
return r29954861;
}
double f(double x, double y, double z, double t) {
double r29954862 = x;
double r29954863 = y;
double r29954864 = r29954863 - r29954862;
double r29954865 = z;
double r29954866 = t;
double r29954867 = r29954865 / r29954866;
double r29954868 = r29954864 * r29954867;
double r29954869 = r29954862 + r29954868;
return r29954869;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.8 |
|---|---|
| Target | 2.0 |
| Herbie | 1.8 |
Initial program 1.8
Final simplification1.8
herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"
:herbie-target
(if (< (* (- y x) (/ z t)) -1013646692435.8867) (+ 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))))