\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -2.273448994496035253530762983989520870583 \cdot 10^{87}:\\
\;\;\;\;-re\\
\mathbf{elif}\;re \le 1.763702591686904819827254628881572839528 \cdot 10^{111}:\\
\;\;\;\;\sqrt{im \cdot im + re \cdot re}\\
\mathbf{else}:\\
\;\;\;\;re\\
\end{array}double f(double re, double im) {
double r1677531 = re;
double r1677532 = r1677531 * r1677531;
double r1677533 = im;
double r1677534 = r1677533 * r1677533;
double r1677535 = r1677532 + r1677534;
double r1677536 = sqrt(r1677535);
return r1677536;
}
double f(double re, double im) {
double r1677537 = re;
double r1677538 = -2.2734489944960353e+87;
bool r1677539 = r1677537 <= r1677538;
double r1677540 = -r1677537;
double r1677541 = 1.7637025916869048e+111;
bool r1677542 = r1677537 <= r1677541;
double r1677543 = im;
double r1677544 = r1677543 * r1677543;
double r1677545 = r1677537 * r1677537;
double r1677546 = r1677544 + r1677545;
double r1677547 = sqrt(r1677546);
double r1677548 = r1677542 ? r1677547 : r1677537;
double r1677549 = r1677539 ? r1677540 : r1677548;
return r1677549;
}



Bits error versus re



Bits error versus im
Results
if re < -2.2734489944960353e+87Initial program 49.1
Taylor expanded around -inf 11.1
Simplified11.1
if -2.2734489944960353e+87 < re < 1.7637025916869048e+111Initial program 21.4
if 1.7637025916869048e+111 < re Initial program 53.8
Taylor expanded around inf 10.3
Final simplification17.8
herbie shell --seed 2019192
(FPCore (re im)
:name "math.abs on complex"
(sqrt (+ (* re re) (* im im))))