re \cdot re - im \cdot im
\left(re - im\right) \cdot \left(re + im\right)
double f(double re, double im) {
double r1504 = re;
double r1505 = r1504 * r1504;
double r1506 = im;
double r1507 = r1506 * r1506;
double r1508 = r1505 - r1507;
return r1508;
}
double f(double re, double im) {
double r1509 = re;
double r1510 = im;
double r1511 = r1509 - r1510;
double r1512 = r1509 + r1510;
double r1513 = r1511 * r1512;
return r1513;
}



Bits error versus re



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