\sqrt{\left(\frac{\left(re \cdot re\right)}{\left(im \cdot im\right)}\right)}\sqrt{re \cdot re + im \cdot im}double f(double re, double im) {
double r733253 = re;
double r733254 = r733253 * r733253;
double r733255 = im;
double r733256 = r733255 * r733255;
double r733257 = r733254 + r733256;
double r733258 = sqrt(r733257);
return r733258;
}
double f(double re, double im) {
double r733259 = re;
double r733260 = r733259 * r733259;
double r733261 = im;
double r733262 = r733261 * r733261;
double r733263 = r733260 + r733262;
double r733264 = sqrt(r733263);
return r733264;
}



Bits error versus re



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