\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\sqrt[3]{{\left(\mathsf{fma}\left(x, y, z\right) - \left(z + x \cdot y\right)\right)}^{3}} - 1double f(double x, double y, double z) {
double r41959 = x;
double r41960 = y;
double r41961 = z;
double r41962 = fma(r41959, r41960, r41961);
double r41963 = 1.0;
double r41964 = r41959 * r41960;
double r41965 = r41964 + r41961;
double r41966 = r41963 + r41965;
double r41967 = r41962 - r41966;
return r41967;
}
double f(double x, double y, double z) {
double r41968 = x;
double r41969 = y;
double r41970 = z;
double r41971 = fma(r41968, r41969, r41970);
double r41972 = r41968 * r41969;
double r41973 = r41970 + r41972;
double r41974 = r41971 - r41973;
double r41975 = 3.0;
double r41976 = pow(r41974, r41975);
double r41977 = cbrt(r41976);
double r41978 = 1.0;
double r41979 = r41977 - r41978;
return r41979;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 44.9 |
|---|---|
| Target | 0 |
| Herbie | 8.3 |
Initial program 44.9
rmApplied add-cbrt-cube44.9
Simplified44.9
rmApplied associate--r+31.3
rmApplied *-un-lft-identity31.3
Applied unpow-prod-down31.3
Applied cbrt-prod31.3
Simplified31.3
Simplified15.1
rmApplied add-cbrt-cube15.2
Simplified8.3
Final simplification8.3
herbie shell --seed 2020047
(FPCore (x y z)
:name "simple fma test"
:precision binary64
:herbie-target
-1
(- (fma x y z) (+ 1 (+ (* x y) z))))