re \cdot re - im \cdot im
\left(re + im\right) \cdot \left(re - im\right)
double f(double re, double im) {
double r304383 = re;
double r304384 = r304383 * r304383;
double r304385 = im;
double r304386 = r304385 * r304385;
double r304387 = r304384 - r304386;
return r304387;
}
double f(double re, double im) {
double r304388 = re;
double r304389 = im;
double r304390 = r304388 + r304389;
double r304391 = r304388 - r304389;
double r304392 = r304390 * r304391;
return r304392;
}



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 2019142 +o rules:numerics
(FPCore (re im)
:name "math.square on complex, real part"
(- (* re re) (* im im)))