re \cdot re - im \cdot im
\left(re + im\right) \cdot \left(re - im\right)
double f(double re, double im) {
double r108734 = re;
double r108735 = r108734 * r108734;
double r108736 = im;
double r108737 = r108736 * r108736;
double r108738 = r108735 - r108737;
return r108738;
}
double f(double re, double im) {
double r108739 = re;
double r108740 = im;
double r108741 = r108739 + r108740;
double r108742 = r108739 - r108740;
double r108743 = r108741 * r108742;
return r108743;
}



Bits error versus re



Bits error versus im
Results
Initial program 0.0
Taylor expanded around 0 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019156 +o rules:numerics
(FPCore (re im)
:name "math.square on complex, real part"
(- (* re re) (* im im)))