x \cdot \left(y + z\right) + z \cdot 5
z \cdot \left(5 + x\right) + y \cdot x
double f(double x, double y, double z) {
double r28167698 = x;
double r28167699 = y;
double r28167700 = z;
double r28167701 = r28167699 + r28167700;
double r28167702 = r28167698 * r28167701;
double r28167703 = 5.0;
double r28167704 = r28167700 * r28167703;
double r28167705 = r28167702 + r28167704;
return r28167705;
}
double f(double x, double y, double z) {
double r28167706 = z;
double r28167707 = 5.0;
double r28167708 = x;
double r28167709 = r28167707 + r28167708;
double r28167710 = r28167706 * r28167709;
double r28167711 = y;
double r28167712 = r28167711 * r28167708;
double r28167713 = r28167710 + r28167712;
return r28167713;
}




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
rmApplied distribute-lft-in0.1
Applied associate-+l+0.1
Simplified0.1
rmApplied add-sqr-sqrt12.4
Applied associate-*r*12.2
rmApplied associate-*l*12.4
Simplified0.1
Final simplification0.1
herbie shell --seed 2019200
(FPCore (x y z)
:name "Graphics.Rendering.Plot.Render.Plot.Legend:renderLegendOutside from plot-0.2.3.4, C"
:herbie-target
(+ (* (+ x 5.0) z) (* x y))
(+ (* x (+ y z)) (* z 5.0)))