\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -2.47409571178928762 \cdot 10^{117}:\\
\;\;\;\;-re\\
\mathbf{elif}\;re \le 5.43513758536357538 \cdot 10^{84}:\\
\;\;\;\;\sqrt{re \cdot re + im \cdot im}\\
\mathbf{else}:\\
\;\;\;\;re\\
\end{array}double f(double re, double im) {
double r40764 = re;
double r40765 = r40764 * r40764;
double r40766 = im;
double r40767 = r40766 * r40766;
double r40768 = r40765 + r40767;
double r40769 = sqrt(r40768);
return r40769;
}
double f(double re, double im) {
double r40770 = re;
double r40771 = -2.4740957117892876e+117;
bool r40772 = r40770 <= r40771;
double r40773 = -r40770;
double r40774 = 5.435137585363575e+84;
bool r40775 = r40770 <= r40774;
double r40776 = r40770 * r40770;
double r40777 = im;
double r40778 = r40777 * r40777;
double r40779 = r40776 + r40778;
double r40780 = sqrt(r40779);
double r40781 = r40775 ? r40780 : r40770;
double r40782 = r40772 ? r40773 : r40781;
return r40782;
}



Bits error versus re



Bits error versus im
Results
if re < -2.4740957117892876e+117Initial program 55.4
Taylor expanded around -inf 9.4
Simplified9.4
if -2.4740957117892876e+117 < re < 5.435137585363575e+84Initial program 21.3
if 5.435137585363575e+84 < re Initial program 47.8
Taylor expanded around inf 11.2
Final simplification17.7
herbie shell --seed 2019198
(FPCore (re im)
:name "math.abs on complex"
(sqrt (+ (* re re) (* im im))))