x \cdot \left(y + z\right) + z \cdot 5
x \cdot \left(y + z\right) + z \cdot 5
double f(double x, double y, double z) {
double r556975 = x;
double r556976 = y;
double r556977 = z;
double r556978 = r556976 + r556977;
double r556979 = r556975 * r556978;
double r556980 = 5.0;
double r556981 = r556977 * r556980;
double r556982 = r556979 + r556981;
return r556982;
}
double f(double x, double y, double z) {
double r556983 = x;
double r556984 = y;
double r556985 = z;
double r556986 = r556984 + r556985;
double r556987 = r556983 * r556986;
double r556988 = 5.0;
double r556989 = r556985 * r556988;
double r556990 = r556987 + r556989;
return r556990;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
Final simplification0.1
herbie shell --seed 2020081 +o rules:numerics
(FPCore (x y z)
:name "Graphics.Rendering.Plot.Render.Plot.Legend:renderLegendOutside from plot-0.2.3.4, C"
:precision binary64
:herbie-target
(+ (* (+ x 5) z) (* x y))
(+ (* x (+ y z)) (* z 5)))