re \cdot re - im \cdot im
\mathsf{fma}\left(re, re, -im \cdot im\right)double f(double re, double im) {
double r570 = re;
double r571 = r570 * r570;
double r572 = im;
double r573 = r572 * r572;
double r574 = r571 - r573;
return r574;
}
double f(double re, double im) {
double r575 = re;
double r576 = im;
double r577 = r576 * r576;
double r578 = -r577;
double r579 = fma(r575, r575, r578);
return r579;
}



Bits error versus re



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