x + \frac{y \cdot \left(z - t\right)}{a - t}x + \frac{1}{\frac{\frac{a - t}{z - t}}{y}}double f(double x, double y, double z, double t, double a) {
double r615297 = x;
double r615298 = y;
double r615299 = z;
double r615300 = t;
double r615301 = r615299 - r615300;
double r615302 = r615298 * r615301;
double r615303 = a;
double r615304 = r615303 - r615300;
double r615305 = r615302 / r615304;
double r615306 = r615297 + r615305;
return r615306;
}
double f(double x, double y, double z, double t, double a) {
double r615307 = x;
double r615308 = 1.0;
double r615309 = a;
double r615310 = t;
double r615311 = r615309 - r615310;
double r615312 = z;
double r615313 = r615312 - r615310;
double r615314 = r615311 / r615313;
double r615315 = y;
double r615316 = r615314 / r615315;
double r615317 = r615308 / r615316;
double r615318 = r615307 + r615317;
return r615318;
}




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.1 |
| Herbie | 1.2 |
Initial program 10.9
rmApplied associate-/l*1.1
rmApplied clear-num1.2
Final simplification1.2
herbie shell --seed 2020001
(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))))