\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -1.4662125478442153 \cdot 10^{+153}:\\
\;\;\;\;-re\\
\mathbf{elif}\;re \le 6.855762661566607 \cdot 10^{+153}:\\
\;\;\;\;\sqrt{im \cdot im + re \cdot re}\\
\mathbf{else}:\\
\;\;\;\;re\\
\end{array}double f(double re, double im) {
double r1211852 = re;
double r1211853 = r1211852 * r1211852;
double r1211854 = im;
double r1211855 = r1211854 * r1211854;
double r1211856 = r1211853 + r1211855;
double r1211857 = sqrt(r1211856);
return r1211857;
}
double f(double re, double im) {
double r1211858 = re;
double r1211859 = -1.4662125478442153e+153;
bool r1211860 = r1211858 <= r1211859;
double r1211861 = -r1211858;
double r1211862 = 6.855762661566607e+153;
bool r1211863 = r1211858 <= r1211862;
double r1211864 = im;
double r1211865 = r1211864 * r1211864;
double r1211866 = r1211858 * r1211858;
double r1211867 = r1211865 + r1211866;
double r1211868 = sqrt(r1211867);
double r1211869 = r1211863 ? r1211868 : r1211858;
double r1211870 = r1211860 ? r1211861 : r1211869;
return r1211870;
}



Bits error versus re



Bits error versus im
Results
if re < -1.4662125478442153e+153Initial program 59.2
Taylor expanded around -inf 8.8
Simplified8.8
if -1.4662125478442153e+153 < re < 6.855762661566607e+153Initial program 20.0
if 6.855762661566607e+153 < re Initial program 59.4
Taylor expanded around inf 9.1
Final simplification17.3
herbie shell --seed 2019124
(FPCore (re im)
:name "math.abs on complex"
(sqrt (+ (* re re) (* im im))))