\mathsf{fma}\left(x, y, z\right) - \left(1.0 + \left(x \cdot y + z\right)\right)\left(\left(\left(\left(\left(\left(\mathsf{fma}\left(x, y, z\right) - z\right) - x \cdot y\right) - 1.0\right)\right)\right)\right)double f(double x, double y, double z) {
double r3851916 = x;
double r3851917 = y;
double r3851918 = z;
double r3851919 = fma(r3851916, r3851917, r3851918);
double r3851920 = 1.0;
double r3851921 = r3851916 * r3851917;
double r3851922 = r3851921 + r3851918;
double r3851923 = r3851920 + r3851922;
double r3851924 = r3851919 - r3851923;
return r3851924;
}
double f(double x, double y, double z) {
double r3851925 = x;
double r3851926 = y;
double r3851927 = z;
double r3851928 = fma(r3851925, r3851926, r3851927);
double r3851929 = r3851928 - r3851927;
double r3851930 = r3851925 * r3851926;
double r3851931 = r3851929 - r3851930;
double r3851932 = 1.0;
double r3851933 = r3851931 - r3851932;
double r3851934 = /* ERROR: no posit support in C */;
double r3851935 = /* ERROR: no posit support in C */;
double r3851936 = /* ERROR: no posit support in C */;
double r3851937 = /* ERROR: no posit support in C */;
return r3851937;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 45.0 |
|---|---|
| Target | 0 |
| Herbie | 15.0 |
Initial program 45.0
rmApplied insert-posit1645.0
rmApplied add-cube-cbrt44.3
rmApplied insert-posit1644.3
Simplified30.7
rmApplied associate--r+15.0
Final simplification15.0
herbie shell --seed 2019165
(FPCore (x y z)
:name "simple fma test"
:herbie-target
-1.0
(- (fma x y z) (+ 1.0 (+ (* x y) z))))