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 r617444 = x;
double r617445 = y;
double r617446 = z;
double r617447 = t;
double r617448 = r617446 - r617447;
double r617449 = a;
double r617450 = r617449 - r617447;
double r617451 = r617448 / r617450;
double r617452 = r617445 * r617451;
double r617453 = r617444 + r617452;
return r617453;
}
double f(double x, double y, double z, double t, double a) {
double r617454 = x;
double r617455 = y;
double r617456 = z;
double r617457 = t;
double r617458 = r617456 - r617457;
double r617459 = a;
double r617460 = r617459 - r617457;
double r617461 = r617458 / r617460;
double r617462 = r617455 * r617461;
double r617463 = r617454 + r617462;
return r617463;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.3 |
|---|---|
| Target | 0.4 |
| Herbie | 1.3 |
Initial program 1.3
Final simplification1.3
herbie shell --seed 2020018
(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)))))