\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)\left(\left(-1 + \left(\mathsf{fma}\left(x, y, z\right) - \left(z + y \cdot x\right)\right)\right)\right)double f(double x, double y, double z) {
double r2536243 = x;
double r2536244 = y;
double r2536245 = z;
double r2536246 = fma(r2536243, r2536244, r2536245);
double r2536247 = 1.0;
double r2536248 = r2536243 * r2536244;
double r2536249 = r2536248 + r2536245;
double r2536250 = r2536247 + r2536249;
double r2536251 = r2536246 - r2536250;
return r2536251;
}
double f(double x, double y, double z) {
double r2536252 = -1.0;
double r2536253 = x;
double r2536254 = y;
double r2536255 = z;
double r2536256 = fma(r2536253, r2536254, r2536255);
double r2536257 = r2536254 * r2536253;
double r2536258 = r2536255 + r2536257;
double r2536259 = r2536256 - r2536258;
double r2536260 = r2536252 + r2536259;
double r2536261 = /* ERROR: no posit support in C */;
double r2536262 = /* ERROR: no posit support in C */;
return r2536262;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 45.8 |
|---|---|
| Target | 0 |
| Herbie | 8.1 |
Initial program 45.8
rmApplied insert-posit1645.8
rmApplied add-cube-cbrt45.0
rmApplied insert-posit1645.0
Simplified14.6
Taylor expanded around inf 8.1
Final simplification8.1
herbie shell --seed 2019141
(FPCore (x y z)
:name "simple fma test"
:herbie-target
-1
(- (fma x y z) (+ 1 (+ (* x y) z))))