\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 r444846 = re;
double r444847 = r444846 * r444846;
double r444848 = im;
double r444849 = r444848 * r444848;
double r444850 = r444847 - r444849;
return r444850;
}
double f(double re, double im) {
double r444851 = re;
double r444852 = im;
double r444853 = r444851 - r444852;
double r444854 = r444852 + r444851;
double r444855 = r444853 * r444854;
return r444855;
}



Bits error versus re



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