re \cdot re - im \cdot im
\mathsf{fma}\left(re, re, -im \cdot im\right)double f(double re, double im) {
double r913345 = re;
double r913346 = r913345 * r913345;
double r913347 = im;
double r913348 = r913347 * r913347;
double r913349 = r913346 - r913348;
return r913349;
}
double f(double re, double im) {
double r913350 = re;
double r913351 = im;
double r913352 = r913351 * r913351;
double r913353 = -r913352;
double r913354 = fma(r913350, r913350, r913353);
return r913354;
}



Bits error versus re



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