\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 r74428 = re;
double r74429 = r74428 * r74428;
double r74430 = im;
double r74431 = r74430 * r74430;
double r74432 = r74429 - r74431;
return r74432;
}
double f(double re, double im) {
double r74433 = re;
double r74434 = im;
double r74435 = r74433 - r74434;
double r74436 = r74434 + r74433;
double r74437 = r74435 * r74436;
return r74437;
}



Bits error versus re



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