x + \frac{y \cdot \left(z - t\right)}{a - t}x + \frac{y}{\frac{a}{z - t} - \frac{t}{z - t}}double f(double x, double y, double z, double t, double a) {
double r331596 = x;
double r331597 = y;
double r331598 = z;
double r331599 = t;
double r331600 = r331598 - r331599;
double r331601 = r331597 * r331600;
double r331602 = a;
double r331603 = r331602 - r331599;
double r331604 = r331601 / r331603;
double r331605 = r331596 + r331604;
return r331605;
}
double f(double x, double y, double z, double t, double a) {
double r331606 = x;
double r331607 = y;
double r331608 = a;
double r331609 = z;
double r331610 = t;
double r331611 = r331609 - r331610;
double r331612 = r331608 / r331611;
double r331613 = r331610 / r331611;
double r331614 = r331612 - r331613;
double r331615 = r331607 / r331614;
double r331616 = r331606 + r331615;
return r331616;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.6 |
|---|---|
| Target | 1.2 |
| Herbie | 1.2 |
Initial program 10.6
rmApplied associate-/l*1.2
rmApplied div-sub1.2
Final simplification1.2
herbie shell --seed 2019199 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
:herbie-target
(+ x (/ y (/ (- a t) (- z t))))
(+ x (/ (* y (- z t)) (- a t))))