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 r393074 = x;
double r393075 = y;
double r393076 = r393075 - r393074;
double r393077 = z;
double r393078 = t;
double r393079 = r393077 / r393078;
double r393080 = r393076 * r393079;
double r393081 = r393074 + r393080;
return r393081;
}
double f(double x, double y, double z, double t) {
double r393082 = y;
double r393083 = t;
double r393084 = z;
double r393085 = r393083 / r393084;
double r393086 = r393082 / r393085;
double r393087 = x;
double r393088 = r393087 / r393085;
double r393089 = r393088 - r393087;
double r393090 = r393086 - r393089;
return r393090;
}




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))))