\left(re \cdot re\right) - \left(im \cdot im\right)
\left(re - im\right) \cdot \left(im + re\right)
double f(double re, double im) {
double r407067 = re;
double r407068 = r407067 * r407067;
double r407069 = im;
double r407070 = r407069 * r407069;
double r407071 = r407068 - r407070;
return r407071;
}
double f(double re, double im) {
double r407072 = re;
double r407073 = im;
double r407074 = r407072 - r407073;
double r407075 = r407073 + r407072;
double r407076 = r407074 * r407075;
return r407076;
}



Bits error versus re



Bits error versus im
Initial program 0.3
Simplified0.1
Final simplification0.1
herbie shell --seed 2019142 +o rules:numerics
(FPCore (re im)
:name "math.square on complex, real part"
(-.p16 (*.p16 re re) (*.p16 im im)))