double f(double re, double im) {
double r600251 = re;
double r600252 = r600251 * r600251;
double r600253 = im;
double r600254 = r600253 * r600253;
double r600255 = r600252 + r600254;
double r600256 = sqrt(r600255);
return r600256;
}
double f(double re, double im) {
double r600257 = re;
double r600258 = r600257 * r600257;
double r600259 = im;
double r600260 = r600259 * r600259;
double r600261 = r600258 + r600260;
double r600262 = sqrt(r600261);
return r600262;
}
\sqrt{re \cdot re + im \cdot im}\sqrt{re \cdot re + im \cdot im}


Bits error versus re



Bits error versus im
Initial program 0.6
Final simplification0.6
herbie shell --seed 2019102 +o rules:numerics
(FPCore (re im)
:name "math.abs on complex"
(sqrt.p16 (+.p16 (*.p16 re re) (*.p16 im im))))