a \cdot a - b \cdot b
\mathsf{fma}\left(a, a, \left(-b \cdot b\right)\right)double f(double a, double b) {
double r2512132 = a;
double r2512133 = r2512132 * r2512132;
double r2512134 = b;
double r2512135 = r2512134 * r2512134;
double r2512136 = r2512133 - r2512135;
return r2512136;
}
double f(double a, double b) {
double r2512137 = a;
double r2512138 = b;
double r2512139 = r2512138 * r2512138;
double r2512140 = -r2512139;
double r2512141 = fma(r2512137, r2512137, r2512140);
return r2512141;
}




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 2019129 +o rules:numerics
(FPCore (a b)
:name "Difference of squares"
:herbie-target
(* (+ a b) (- a b))
(- (* a a) (* b b)))