double f(double re, double im) {
double r37730 = re;
double r37731 = r37730 * r37730;
double r37732 = im;
double r37733 = r37732 * r37732;
double r37734 = r37731 - r37733;
return r37734;
}
double f(double re, double im) {
double r37735 = im;
double r37736 = re;
double r37737 = r37735 + r37736;
double r37738 = r37736 - r37735;
double r37739 = r37737 * r37738;
return r37739;
}
re \cdot re - im \cdot im
\left(im + re\right) \cdot \left(re - im\right)



Bits error versus re



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