a \cdot a - b \cdot b
\mathsf{fma}\left(a, a, -b \cdot b\right)double f(double a, double b) {
double r110268 = a;
double r110269 = r110268 * r110268;
double r110270 = b;
double r110271 = r110270 * r110270;
double r110272 = r110269 - r110271;
return r110272;
}
double f(double a, double b) {
double r110273 = a;
double r110274 = b;
double r110275 = r110274 * r110274;
double r110276 = -r110275;
double r110277 = fma(r110273, r110273, r110276);
return r110277;
}




Bits error versus a




Bits error versus b
| Original | 0.0 |
|---|---|
| Target | 0.0 |
| Herbie | 0.0 |
Initial program 0.0
rmApplied fma-neg0.0
Final simplification0.0
herbie shell --seed 2020001 +o rules:numerics
(FPCore (a b)
:name "Difference of squares"
:precision binary64
:herbie-target
(* (+ a b) (- a b))
(- (* a a) (* b b)))