\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -1.3773968973578107 \cdot 10^{+162}:\\
\;\;\;\;-re\\
\mathbf{elif}\;re \le 1.5108781627056909 \cdot 10^{+137}:\\
\;\;\;\;\sqrt{im \cdot im + re \cdot re}\\
\mathbf{else}:\\
\;\;\;\;re\\
\end{array}double f(double re, double im) {
double r2149049 = re;
double r2149050 = r2149049 * r2149049;
double r2149051 = im;
double r2149052 = r2149051 * r2149051;
double r2149053 = r2149050 + r2149052;
double r2149054 = sqrt(r2149053);
return r2149054;
}
double f(double re, double im) {
double r2149055 = re;
double r2149056 = -1.3773968973578107e+162;
bool r2149057 = r2149055 <= r2149056;
double r2149058 = -r2149055;
double r2149059 = 1.5108781627056909e+137;
bool r2149060 = r2149055 <= r2149059;
double r2149061 = im;
double r2149062 = r2149061 * r2149061;
double r2149063 = r2149055 * r2149055;
double r2149064 = r2149062 + r2149063;
double r2149065 = sqrt(r2149064);
double r2149066 = r2149060 ? r2149065 : r2149055;
double r2149067 = r2149057 ? r2149058 : r2149066;
return r2149067;
}



Bits error versus re



Bits error versus im
Results
if re < -1.3773968973578107e+162Initial program 59.2
Taylor expanded around -inf 7.9
Simplified7.9
if -1.3773968973578107e+162 < re < 1.5108781627056909e+137Initial program 19.7
if 1.5108781627056909e+137 < re Initial program 54.7
Taylor expanded around inf 9.6
Final simplification16.8
herbie shell --seed 2019121
(FPCore (re im)
:name "math.abs on complex"
(sqrt (+ (* re re) (* im im))))