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 r508213 = x;
double r508214 = y;
double r508215 = z;
double r508216 = r508214 + r508215;
double r508217 = r508213 * r508216;
double r508218 = 5.0;
double r508219 = r508215 * r508218;
double r508220 = r508217 + r508219;
return r508220;
}
double f(double x, double y, double z) {
double r508221 = x;
double r508222 = z;
double r508223 = 5.0;
double r508224 = y;
double r508225 = r508221 * r508224;
double r508226 = fma(r508223, r508222, r508225);
double r508227 = fma(r508221, r508222, r508226);
return r508227;
}




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 2020036 +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)))