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 r461355 = x;
double r461356 = y;
double r461357 = r461356 - r461355;
double r461358 = z;
double r461359 = t;
double r461360 = r461358 / r461359;
double r461361 = r461357 * r461360;
double r461362 = r461355 + r461361;
return r461362;
}
double f(double x, double y, double z, double t) {
double r461363 = y;
double r461364 = z;
double r461365 = r461363 * r461364;
double r461366 = t;
double r461367 = r461365 / r461366;
double r461368 = x;
double r461369 = r461368 * r461364;
double r461370 = r461369 / r461366;
double r461371 = r461368 - r461370;
double r461372 = r461367 + r461371;
return r461372;
}




Bits error versus x




Bits error versus y




Bits error versus z




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