\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 r282613 = re;
double r282614 = r282613 * r282613;
double r282615 = im;
double r282616 = r282615 * r282615;
double r282617 = r282614 - r282616;
return r282617;
}
double f(double re, double im) {
double r282618 = re;
double r282619 = im;
double r282620 = r282618 - r282619;
double r282621 = r282619 + r282618;
double r282622 = r282620 * r282621;
return r282622;
}



Bits error versus re



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