\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -3.233858830546266 \cdot 10^{+153}:\\
\;\;\;\;-re\\
\mathbf{elif}\;re \le 3.4644478033583236 \cdot 10^{+152}:\\
\;\;\;\;\sqrt{im \cdot im + re \cdot re}\\
\mathbf{else}:\\
\;\;\;\;re\\
\end{array}double f(double re, double im) {
double r2020533 = re;
double r2020534 = r2020533 * r2020533;
double r2020535 = im;
double r2020536 = r2020535 * r2020535;
double r2020537 = r2020534 + r2020536;
double r2020538 = sqrt(r2020537);
return r2020538;
}
double f(double re, double im) {
double r2020539 = re;
double r2020540 = -3.233858830546266e+153;
bool r2020541 = r2020539 <= r2020540;
double r2020542 = -r2020539;
double r2020543 = 3.4644478033583236e+152;
bool r2020544 = r2020539 <= r2020543;
double r2020545 = im;
double r2020546 = r2020545 * r2020545;
double r2020547 = r2020539 * r2020539;
double r2020548 = r2020546 + r2020547;
double r2020549 = sqrt(r2020548);
double r2020550 = r2020544 ? r2020549 : r2020539;
double r2020551 = r2020541 ? r2020542 : r2020550;
return r2020551;
}



Bits error versus re



Bits error versus im
Results
if re < -3.233858830546266e+153Initial program 59.2
Taylor expanded around -inf 7.8
Simplified7.8
if -3.233858830546266e+153 < re < 3.4644478033583236e+152Initial program 19.9
if 3.4644478033583236e+152 < re Initial program 58.5
Taylor expanded around inf 7.6
Final simplification16.7
herbie shell --seed 2019135
(FPCore (re im)
:name "math.abs on complex"
(sqrt (+ (* re re) (* im im))))