re \cdot re - im \cdot im
\left(im + \left(-im\right)\right) \cdot im + \left(im + re\right) \cdot \left(re - im\right)
double f(double re, double im) {
double r9517 = re;
double r9518 = r9517 * r9517;
double r9519 = im;
double r9520 = r9519 * r9519;
double r9521 = r9518 - r9520;
return r9521;
}
double f(double re, double im) {
double r9522 = im;
double r9523 = -r9522;
double r9524 = r9522 + r9523;
double r9525 = r9524 * r9522;
double r9526 = re;
double r9527 = r9522 + r9526;
double r9528 = r9526 - r9522;
double r9529 = r9527 * r9528;
double r9530 = r9525 + r9529;
return r9530;
}



Bits error versus re



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