\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -2.6806112513558803 \cdot 10^{+152}:\\
\;\;\;\;-re\\
\mathbf{elif}\;re \le 3.221654116729901 \cdot 10^{+106}:\\
\;\;\;\;\sqrt{im \cdot im + re \cdot re}\\
\mathbf{else}:\\
\;\;\;\;re\\
\end{array}double f(double re, double im) {
double r2298980 = re;
double r2298981 = r2298980 * r2298980;
double r2298982 = im;
double r2298983 = r2298982 * r2298982;
double r2298984 = r2298981 + r2298983;
double r2298985 = sqrt(r2298984);
return r2298985;
}
double f(double re, double im) {
double r2298986 = re;
double r2298987 = -2.6806112513558803e+152;
bool r2298988 = r2298986 <= r2298987;
double r2298989 = -r2298986;
double r2298990 = 3.221654116729901e+106;
bool r2298991 = r2298986 <= r2298990;
double r2298992 = im;
double r2298993 = r2298992 * r2298992;
double r2298994 = r2298986 * r2298986;
double r2298995 = r2298993 + r2298994;
double r2298996 = sqrt(r2298995);
double r2298997 = r2298991 ? r2298996 : r2298986;
double r2298998 = r2298988 ? r2298989 : r2298997;
return r2298998;
}



Bits error versus re



Bits error versus im
Results
if re < -2.6806112513558803e+152Initial program 58.8
Taylor expanded around -inf 8.7
Simplified8.7
if -2.6806112513558803e+152 < re < 3.221654116729901e+106Initial program 19.7
if 3.221654116729901e+106 < re Initial program 48.9
Taylor expanded around inf 10.6
Final simplification16.8
herbie shell --seed 2019165
(FPCore (re im)
:name "math.abs on complex"
(sqrt (+ (* re re) (* im im))))