double f(double re, double im) {
double r789130 = re;
double r789131 = r789130 * r789130;
double r789132 = im;
double r789133 = r789132 * r789132;
double r789134 = r789131 + r789133;
double r789135 = sqrt(r789134);
return r789135;
}
double f(double re, double im) {
double r789136 = re;
double r789137 = r789136 * r789136;
double r789138 = im;
double r789139 = r789138 * r789138;
double r789140 = r789137 + r789139;
double r789141 = sqrt(r789140);
return r789141;
}
\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 2019101 +o rules:numerics
(FPCore (re im)
:name "math.abs on complex"
(sqrt.p16 (+.p16 (*.p16 re re) (*.p16 im im))))