x + \left(y - x\right) \cdot \frac{z}{t}\frac{y}{\frac{t}{z}} - \left(\frac{x}{\frac{t}{z}} - x\right)double f(double x, double y, double z, double t) {
double r320749 = x;
double r320750 = y;
double r320751 = r320750 - r320749;
double r320752 = z;
double r320753 = t;
double r320754 = r320752 / r320753;
double r320755 = r320751 * r320754;
double r320756 = r320749 + r320755;
return r320756;
}
double f(double x, double y, double z, double t) {
double r320757 = y;
double r320758 = t;
double r320759 = z;
double r320760 = r320758 / r320759;
double r320761 = r320757 / r320760;
double r320762 = x;
double r320763 = r320762 / r320760;
double r320764 = r320763 - r320762;
double r320765 = r320761 - r320764;
return r320765;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.2 |
|---|---|
| Target | 2.4 |
| Herbie | 2.2 |
Initial program 2.2
Simplified2.2
rmApplied fma-udef2.2
Simplified2.2
rmApplied div-sub2.2
Applied associate-+l-2.2
Final simplification2.2
herbie shell --seed 2019323 +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))))