re \cdot re - im \cdot im
\left(re + im\right) \cdot \left(re - im\right)
double f(double re, double im) {
double r267861 = re;
double r267862 = r267861 * r267861;
double r267863 = im;
double r267864 = r267863 * r267863;
double r267865 = r267862 - r267864;
return r267865;
}
double f(double re, double im) {
double r267866 = re;
double r267867 = im;
double r267868 = r267866 + r267867;
double r267869 = r267866 - r267867;
double r267870 = r267868 * r267869;
return r267870;
}



Bits error versus re



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