re \cdot re - im \cdot im
\left(re - im\right) \cdot \left(re + im\right)
double f(double re, double im) {
double r1490 = re;
double r1491 = r1490 * r1490;
double r1492 = im;
double r1493 = r1492 * r1492;
double r1494 = r1491 - r1493;
return r1494;
}
double f(double re, double im) {
double r1495 = re;
double r1496 = im;
double r1497 = r1495 - r1496;
double r1498 = r1495 + r1496;
double r1499 = r1497 * r1498;
return r1499;
}



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)))