\left(x \cdot 3\right) \cdot y - z
\mathsf{fma}\left(x, y \cdot 3, -z\right)double f(double x, double y, double z) {
double r601100 = x;
double r601101 = 3.0;
double r601102 = r601100 * r601101;
double r601103 = y;
double r601104 = r601102 * r601103;
double r601105 = z;
double r601106 = r601104 - r601105;
return r601106;
}
double f(double x, double y, double z) {
double r601107 = x;
double r601108 = y;
double r601109 = 3.0;
double r601110 = r601108 * r601109;
double r601111 = z;
double r601112 = -r601111;
double r601113 = fma(r601107, r601110, r601112);
return r601113;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 0.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.2
rmApplied add-cube-cbrt0.9
Applied prod-diff0.9
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x y z)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, B"
:precision binary64
:herbie-target
(- (* x (* 3 y)) z)
(- (* (* x 3) y) z))