re \cdot im + im \cdot re
re \cdot im + im \cdot re
double f(double re, double im) {
double r2000 = re;
double r2001 = im;
double r2002 = r2000 * r2001;
double r2003 = r2001 * r2000;
double r2004 = r2002 + r2003;
return r2004;
}
double f(double re, double im) {
double r2005 = re;
double r2006 = im;
double r2007 = r2005 * r2006;
double r2008 = r2006 * r2005;
double r2009 = r2007 + r2008;
return r2009;
}



Bits error versus re



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