x \cdot \left(y + z\right) + z \cdot 5
\mathsf{fma}\left(x, z, \mathsf{fma}\left(5, z, x \cdot y\right)\right)double f(double x, double y, double z) {
double r514022 = x;
double r514023 = y;
double r514024 = z;
double r514025 = r514023 + r514024;
double r514026 = r514022 * r514025;
double r514027 = 5.0;
double r514028 = r514024 * r514027;
double r514029 = r514026 + r514028;
return r514029;
}
double f(double x, double y, double z) {
double r514030 = x;
double r514031 = z;
double r514032 = 5.0;
double r514033 = y;
double r514034 = r514030 * r514033;
double r514035 = fma(r514032, r514031, r514034);
double r514036 = fma(r514030, r514031, r514035);
return r514036;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
Initial program 0.1
Simplified0.1
Taylor expanded around 0 0.1
Simplified0.0
Final simplification0.0
herbie shell --seed 2020065 +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)))