re \cdot re - im \cdot im
\left(re - im\right) \cdot re + im \cdot \left(re - im\right)
double f(double re, double im) {
double r10115 = re;
double r10116 = r10115 * r10115;
double r10117 = im;
double r10118 = r10117 * r10117;
double r10119 = r10116 - r10118;
return r10119;
}
double f(double re, double im) {
double r10120 = re;
double r10121 = im;
double r10122 = r10120 - r10121;
double r10123 = r10122 * r10120;
double r10124 = r10121 * r10122;
double r10125 = r10123 + r10124;
return r10125;
}



Bits error versus re



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