\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\sqrt[3]{{\left(\left(\mathsf{fma}\left(x, y, z\right) - \left(z + y \cdot x\right)\right) - 1\right)}^{3}}double f(double x, double y, double z) {
double r43751 = x;
double r43752 = y;
double r43753 = z;
double r43754 = fma(r43751, r43752, r43753);
double r43755 = 1.0;
double r43756 = r43751 * r43752;
double r43757 = r43756 + r43753;
double r43758 = r43755 + r43757;
double r43759 = r43754 - r43758;
return r43759;
}
double f(double x, double y, double z) {
double r43760 = x;
double r43761 = y;
double r43762 = z;
double r43763 = fma(r43760, r43761, r43762);
double r43764 = r43761 * r43760;
double r43765 = r43762 + r43764;
double r43766 = r43763 - r43765;
double r43767 = 1.0;
double r43768 = r43766 - r43767;
double r43769 = 3.0;
double r43770 = pow(r43768, r43769);
double r43771 = cbrt(r43770);
return r43771;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 44.6 |
|---|---|
| Target | 0 |
| Herbie | 8.5 |
Initial program 44.6
rmApplied *-un-lft-identity44.6
Applied *-un-lft-identity44.6
Applied distribute-lft-out--44.6
Simplified30.3
rmApplied add-cbrt-cube30.4
Simplified8.5
Final simplification8.5
herbie shell --seed 2019195
(FPCore (x y z)
:name "simple fma test"
:herbie-target
-1.0
(- (fma x y z) (+ 1.0 (+ (* x y) z))))