\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 r800573 = re;
double r800574 = r800573 * r800573;
double r800575 = im;
double r800576 = r800575 * r800575;
double r800577 = r800574 - r800576;
return r800577;
}
double f(double re, double im) {
double r800578 = re;
double r800579 = im;
double r800580 = r800578 - r800579;
double r800581 = r800579 + r800578;
double r800582 = r800580 * r800581;
return r800582;
}



Bits error versus re



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