x + \frac{y \cdot \left(z - t\right)}{z - a}y \cdot \frac{z - t}{z - a} + xdouble f(double x, double y, double z, double t, double a) {
double r294201 = x;
double r294202 = y;
double r294203 = z;
double r294204 = t;
double r294205 = r294203 - r294204;
double r294206 = r294202 * r294205;
double r294207 = a;
double r294208 = r294203 - r294207;
double r294209 = r294206 / r294208;
double r294210 = r294201 + r294209;
return r294210;
}
double f(double x, double y, double z, double t, double a) {
double r294211 = y;
double r294212 = z;
double r294213 = t;
double r294214 = r294212 - r294213;
double r294215 = a;
double r294216 = r294212 - r294215;
double r294217 = r294214 / r294216;
double r294218 = r294211 * r294217;
double r294219 = x;
double r294220 = r294218 + r294219;
return r294220;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.5 |
|---|---|
| Target | 1.1 |
| Herbie | 1.2 |
Initial program 10.5
Simplified2.8
rmApplied fma-udef2.8
rmApplied div-inv2.8
Applied associate-*l*1.3
Simplified1.2
Final simplification1.2
herbie shell --seed 2019212 +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))))