x + \frac{y \cdot \left(z - t\right)}{z - a}x + \frac{y}{\frac{z}{z - t} - \frac{a}{z - t}}double f(double x, double y, double z, double t, double a) {
double r493189 = x;
double r493190 = y;
double r493191 = z;
double r493192 = t;
double r493193 = r493191 - r493192;
double r493194 = r493190 * r493193;
double r493195 = a;
double r493196 = r493191 - r493195;
double r493197 = r493194 / r493196;
double r493198 = r493189 + r493197;
return r493198;
}
double f(double x, double y, double z, double t, double a) {
double r493199 = x;
double r493200 = y;
double r493201 = z;
double r493202 = t;
double r493203 = r493201 - r493202;
double r493204 = r493201 / r493203;
double r493205 = a;
double r493206 = r493205 / r493203;
double r493207 = r493204 - r493206;
double r493208 = r493200 / r493207;
double r493209 = r493199 + r493208;
return r493209;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




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