re \cdot im + im \cdot re
\left(2 \cdot im\right) \cdot re
double f(double re, double im) {
double r8046 = re;
double r8047 = im;
double r8048 = r8046 * r8047;
double r8049 = r8047 * r8046;
double r8050 = r8048 + r8049;
return r8050;
}
double f(double re, double im) {
double r8051 = 2.0;
double r8052 = im;
double r8053 = r8051 * r8052;
double r8054 = re;
double r8055 = r8053 * r8054;
return r8055;
}



Bits error versus re



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