\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -1.940119593462783780503740532731557409155 \cdot 10^{70}:\\
\;\;\;\;-re\\
\mathbf{elif}\;re \le 1.149380376403675710903737768625835202966 \cdot 10^{95}:\\
\;\;\;\;\sqrt{im \cdot im + re \cdot re}\\
\mathbf{else}:\\
\;\;\;\;re\\
\end{array}double f(double re, double im) {
double r48164 = re;
double r48165 = r48164 * r48164;
double r48166 = im;
double r48167 = r48166 * r48166;
double r48168 = r48165 + r48167;
double r48169 = sqrt(r48168);
return r48169;
}
double f(double re, double im) {
double r48170 = re;
double r48171 = -1.9401195934627838e+70;
bool r48172 = r48170 <= r48171;
double r48173 = -r48170;
double r48174 = 1.1493803764036757e+95;
bool r48175 = r48170 <= r48174;
double r48176 = im;
double r48177 = r48176 * r48176;
double r48178 = r48170 * r48170;
double r48179 = r48177 + r48178;
double r48180 = sqrt(r48179);
double r48181 = r48175 ? r48180 : r48170;
double r48182 = r48172 ? r48173 : r48181;
return r48182;
}



Bits error versus re



Bits error versus im
Results
if re < -1.9401195934627838e+70Initial program 46.3
Taylor expanded around -inf 12.1
Simplified12.1
if -1.9401195934627838e+70 < re < 1.1493803764036757e+95Initial program 21.8
if 1.1493803764036757e+95 < re Initial program 49.0
Taylor expanded around inf 11.2
Final simplification18.0
herbie shell --seed 2019179
(FPCore (re im)
:name "math.abs on complex"
(sqrt (+ (* re re) (* im im))))