\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 r312318 = re;
double r312319 = r312318 * r312318;
double r312320 = im;
double r312321 = r312320 * r312320;
double r312322 = r312319 - r312321;
return r312322;
}
double f(double re, double im) {
double r312323 = re;
double r312324 = im;
double r312325 = r312323 - r312324;
double r312326 = r312324 + r312323;
double r312327 = r312325 * r312326;
return r312327;
}



Bits error versus re



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