\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 r39019 = x;
double r39020 = y;
double r39021 = z;
double r39022 = fma(r39019, r39020, r39021);
double r39023 = 1.0;
double r39024 = r39019 * r39020;
double r39025 = r39024 + r39021;
double r39026 = r39023 + r39025;
double r39027 = r39022 - r39026;
return r39027;
}
double f(double __attribute__((unused)) x, double __attribute__((unused)) y, double __attribute__((unused)) z) {
double r39028 = 1.0;
double r39029 = -r39028;
return r39029;
}




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 2019199 +o rules:numerics
(FPCore (x y z)
:name "simple fma test"
:herbie-target
-1.0
(- (fma x y z) (+ 1.0 (+ (* x y) z))))