x + \frac{y \cdot \left(z - t\right)}{a - t}y \cdot \frac{z - t}{a - t} + xdouble f(double x, double y, double z, double t, double a) {
double r552197 = x;
double r552198 = y;
double r552199 = z;
double r552200 = t;
double r552201 = r552199 - r552200;
double r552202 = r552198 * r552201;
double r552203 = a;
double r552204 = r552203 - r552200;
double r552205 = r552202 / r552204;
double r552206 = r552197 + r552205;
return r552206;
}
double f(double x, double y, double z, double t, double a) {
double r552207 = y;
double r552208 = z;
double r552209 = t;
double r552210 = r552208 - r552209;
double r552211 = a;
double r552212 = r552211 - r552209;
double r552213 = r552210 / r552212;
double r552214 = r552207 * r552213;
double r552215 = x;
double r552216 = r552214 + r552215;
return r552216;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.9 |
|---|---|
| Target | 1.0 |
| Herbie | 1.2 |
Initial program 10.9
Simplified3.0
rmApplied fma-udef3.0
rmApplied div-inv3.0
Applied associate-*l*1.2
Simplified1.2
Final simplification1.2
herbie shell --seed 2020047 +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))))