\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -4.133795376408894095114882696362622107441 \cdot 10^{79}:\\
\;\;\;\;-re\\
\mathbf{elif}\;re \le 2.844559323175136428258475744554794771695 \cdot 10^{102}:\\
\;\;\;\;\sqrt{im \cdot im + re \cdot re}\\
\mathbf{else}:\\
\;\;\;\;re\\
\end{array}double f(double re, double im) {
double r1788655 = re;
double r1788656 = r1788655 * r1788655;
double r1788657 = im;
double r1788658 = r1788657 * r1788657;
double r1788659 = r1788656 + r1788658;
double r1788660 = sqrt(r1788659);
return r1788660;
}
double f(double re, double im) {
double r1788661 = re;
double r1788662 = -4.133795376408894e+79;
bool r1788663 = r1788661 <= r1788662;
double r1788664 = -r1788661;
double r1788665 = 2.8445593231751364e+102;
bool r1788666 = r1788661 <= r1788665;
double r1788667 = im;
double r1788668 = r1788667 * r1788667;
double r1788669 = r1788661 * r1788661;
double r1788670 = r1788668 + r1788669;
double r1788671 = sqrt(r1788670);
double r1788672 = r1788666 ? r1788671 : r1788661;
double r1788673 = r1788663 ? r1788664 : r1788672;
return r1788673;
}



Bits error versus re



Bits error versus im
Results
if re < -4.133795376408894e+79Initial program 49.2
Taylor expanded around -inf 11.9
Simplified11.9
if -4.133795376408894e+79 < re < 2.8445593231751364e+102Initial program 21.7
if 2.8445593231751364e+102 < re Initial program 52.1
Taylor expanded around inf 10.5
Final simplification18.0
herbie shell --seed 2019169
(FPCore (re im)
:name "math.abs on complex"
(sqrt (+ (* re re) (* im im))))