\mathsf{fma}\left(x, y, z\right) - \left(1 + \left(x \cdot y + z\right)\right)-1
double f(double x, double y, double z) {
double r54330 = x;
double r54331 = y;
double r54332 = z;
double r54333 = fma(r54330, r54331, r54332);
double r54334 = 1.0;
double r54335 = r54330 * r54331;
double r54336 = r54335 + r54332;
double r54337 = r54334 + r54336;
double r54338 = r54333 - r54337;
return r54338;
}
double f(double __attribute__((unused)) x, double __attribute__((unused)) y, double __attribute__((unused)) z) {
double r54339 = 1.0;
double r54340 = -r54339;
return r54340;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 45.4 |
|---|---|
| Target | 0 |
| Herbie | 0 |
Initial program 45.4
Simplified0
Final simplification0
herbie shell --seed 2020065 +o rules:numerics
(FPCore (x y z)
:name "simple fma test"
:precision binary64
:herbie-target
-1
(- (fma x y z) (+ 1 (+ (* x y) z))))