x + \frac{y \cdot \left(z - t\right)}{a - t}\frac{z - t}{a - t} \cdot y + xdouble f(double x, double y, double z, double t, double a) {
double r33819379 = x;
double r33819380 = y;
double r33819381 = z;
double r33819382 = t;
double r33819383 = r33819381 - r33819382;
double r33819384 = r33819380 * r33819383;
double r33819385 = a;
double r33819386 = r33819385 - r33819382;
double r33819387 = r33819384 / r33819386;
double r33819388 = r33819379 + r33819387;
return r33819388;
}
double f(double x, double y, double z, double t, double a) {
double r33819389 = z;
double r33819390 = t;
double r33819391 = r33819389 - r33819390;
double r33819392 = a;
double r33819393 = r33819392 - r33819390;
double r33819394 = r33819391 / r33819393;
double r33819395 = y;
double r33819396 = r33819394 * r33819395;
double r33819397 = x;
double r33819398 = r33819396 + r33819397;
return r33819398;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 11.0 |
|---|---|
| Target | 1.3 |
| Herbie | 1.5 |
Initial program 11.0
Simplified3.1
rmApplied clear-num3.4
rmApplied fma-udef3.4
Simplified3.2
rmApplied associate-/r/1.5
Final simplification1.5
herbie shell --seed 2019174 +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))))