x + y \cdot \frac{z - t}{a - t}x + y \cdot \frac{z - t}{a - t}double f(double x, double y, double z, double t, double a) {
double r583548 = x;
double r583549 = y;
double r583550 = z;
double r583551 = t;
double r583552 = r583550 - r583551;
double r583553 = a;
double r583554 = r583553 - r583551;
double r583555 = r583552 / r583554;
double r583556 = r583549 * r583555;
double r583557 = r583548 + r583556;
return r583557;
}
double f(double x, double y, double z, double t, double a) {
double r583558 = x;
double r583559 = y;
double r583560 = z;
double r583561 = t;
double r583562 = r583560 - r583561;
double r583563 = a;
double r583564 = r583563 - r583561;
double r583565 = r583562 / r583564;
double r583566 = r583559 * r583565;
double r583567 = r583558 + r583566;
return r583567;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.4 |
|---|---|
| Target | 0.4 |
| Herbie | 1.4 |
Initial program 1.4
Final simplification1.4
herbie shell --seed 2020083 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(if (< y -8.508084860551241e-17) (+ x (* y (/ (- z t) (- a t)))) (if (< y 2.894426862792089e-49) (+ x (* (* y (- z t)) (/ 1 (- a t)))) (+ x (* y (/ (- z t) (- a t))))))
(+ x (* y (/ (- z t) (- a t)))))