re \cdot re - im \cdot im
\mathsf{fma}\left(re, re, \left(-im \cdot im\right)\right)double f(double re, double im) {
double r237606 = re;
double r237607 = r237606 * r237606;
double r237608 = im;
double r237609 = r237608 * r237608;
double r237610 = r237607 - r237609;
return r237610;
}
double f(double re, double im) {
double r237611 = re;
double r237612 = im;
double r237613 = r237612 * r237612;
double r237614 = -r237613;
double r237615 = fma(r237611, r237611, r237614);
return r237615;
}



Bits error versus re



Bits error versus im
Initial program 0.0
rmApplied fma-neg0.0
Final simplification0.0
herbie shell --seed 2019129 +o rules:numerics
(FPCore (re im)
:name "math.square on complex, real part"
(- (* re re) (* im im)))