re \cdot re - im \cdot im
\left(re + im\right) \cdot \left(re - im\right)
double f(double re, double im) {
double r591285 = re;
double r591286 = r591285 * r591285;
double r591287 = im;
double r591288 = r591287 * r591287;
double r591289 = r591286 - r591288;
return r591289;
}
double f(double re, double im) {
double r591290 = re;
double r591291 = im;
double r591292 = r591290 + r591291;
double r591293 = r591290 - r591291;
double r591294 = r591292 * r591293;
return r591294;
}



Bits error versus re



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