\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 r443612 = re;
double r443613 = r443612 * r443612;
double r443614 = im;
double r443615 = r443614 * r443614;
double r443616 = r443613 - r443615;
return r443616;
}
double f(double re, double im) {
double r443617 = re;
double r443618 = im;
double r443619 = r443617 - r443618;
double r443620 = r443618 + r443617;
double r443621 = r443619 * r443620;
return r443621;
}



Bits error versus re



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