\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 r1051711 = re;
double r1051712 = r1051711 * r1051711;
double r1051713 = im;
double r1051714 = r1051713 * r1051713;
double r1051715 = r1051712 - r1051714;
return r1051715;
}
double f(double re, double im) {
double r1051716 = re;
double r1051717 = im;
double r1051718 = r1051716 - r1051717;
double r1051719 = r1051717 + r1051716;
double r1051720 = r1051718 * r1051719;
return r1051720;
}



Bits error versus re



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