x + \frac{y \cdot \left(z - t\right)}{a - t}\frac{\frac{z - t}{a - t}}{\frac{1}{y}} + xdouble f(double x, double y, double z, double t, double a) {
double r774485 = x;
double r774486 = y;
double r774487 = z;
double r774488 = t;
double r774489 = r774487 - r774488;
double r774490 = r774486 * r774489;
double r774491 = a;
double r774492 = r774491 - r774488;
double r774493 = r774490 / r774492;
double r774494 = r774485 + r774493;
return r774494;
}
double f(double x, double y, double z, double t, double a) {
double r774495 = z;
double r774496 = t;
double r774497 = r774495 - r774496;
double r774498 = a;
double r774499 = r774498 - r774496;
double r774500 = r774497 / r774499;
double r774501 = 1.0;
double r774502 = y;
double r774503 = r774501 / r774502;
double r774504 = r774500 / r774503;
double r774505 = x;
double r774506 = r774504 + r774505;
return r774506;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 11.1 |
|---|---|
| Target | 1.2 |
| Herbie | 1.3 |
Initial program 11.1
Simplified2.8
rmApplied clear-num3.0
rmApplied fma-udef3.0
Simplified2.8
rmApplied div-inv2.9
Applied associate-/r*1.3
Final simplification1.3
herbie shell --seed 2020060 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(+ x (/ y (/ (- a t) (- z t))))
(+ x (/ (* y (- z t)) (- a t))))