re \cdot re - im \cdot im
\left(re + im\right) \cdot \left(re - im\right)
double f(double re, double im) {
double r109112 = re;
double r109113 = r109112 * r109112;
double r109114 = im;
double r109115 = r109114 * r109114;
double r109116 = r109113 - r109115;
return r109116;
}
double f(double re, double im) {
double r109117 = re;
double r109118 = im;
double r109119 = r109117 + r109118;
double r109120 = r109117 - r109118;
double r109121 = r109119 * r109120;
return r109121;
}



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