x + \frac{y \cdot \left(z - t\right)}{a - t}x + y \cdot \left(\frac{z}{a - t} - \frac{t}{a - t}\right)double f(double x, double y, double z, double t, double a) {
double r704302 = x;
double r704303 = y;
double r704304 = z;
double r704305 = t;
double r704306 = r704304 - r704305;
double r704307 = r704303 * r704306;
double r704308 = a;
double r704309 = r704308 - r704305;
double r704310 = r704307 / r704309;
double r704311 = r704302 + r704310;
return r704311;
}
double f(double x, double y, double z, double t, double a) {
double r704312 = x;
double r704313 = y;
double r704314 = z;
double r704315 = a;
double r704316 = t;
double r704317 = r704315 - r704316;
double r704318 = r704314 / r704317;
double r704319 = r704316 / r704317;
double r704320 = r704318 - r704319;
double r704321 = r704313 * r704320;
double r704322 = r704312 + r704321;
return r704322;
}




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
rmApplied *-un-lft-identity10.9
Applied times-frac1.2
Simplified1.2
rmApplied div-sub1.2
Final simplification1.2
herbie shell --seed 2020047
(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))))