x + \left(y - x\right) \cdot \frac{z}{t}\frac{y \cdot z}{t} + \left(x - \frac{x \cdot z}{t}\right)double f(double x, double y, double z, double t) {
double r459185 = x;
double r459186 = y;
double r459187 = r459186 - r459185;
double r459188 = z;
double r459189 = t;
double r459190 = r459188 / r459189;
double r459191 = r459187 * r459190;
double r459192 = r459185 + r459191;
return r459192;
}
double f(double x, double y, double z, double t) {
double r459193 = y;
double r459194 = z;
double r459195 = r459193 * r459194;
double r459196 = t;
double r459197 = r459195 / r459196;
double r459198 = x;
double r459199 = r459198 * r459194;
double r459200 = r459199 / r459196;
double r459201 = r459198 - r459200;
double r459202 = r459197 + r459201;
return r459202;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.0 |
|---|---|
| Target | 2.1 |
| Herbie | 6.6 |
Initial program 2.0
rmApplied add-cube-cbrt2.6
Applied add-cube-cbrt2.7
Applied times-frac2.7
Applied associate-*r*0.9
Final simplification6.6
herbie shell --seed 2019294
(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))))