\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -5.9648958467837301 \cdot 10^{102}:\\
\;\;\;\;-1 \cdot re\\
\mathbf{elif}\;re \le 3.49168277985170575 \cdot 10^{70}:\\
\;\;\;\;\sqrt{re \cdot re + im \cdot im}\\
\mathbf{else}:\\
\;\;\;\;re\\
\end{array}double f(double re, double im) {
double r103826 = re;
double r103827 = r103826 * r103826;
double r103828 = im;
double r103829 = r103828 * r103828;
double r103830 = r103827 + r103829;
double r103831 = sqrt(r103830);
return r103831;
}
double f(double re, double im) {
double r103832 = re;
double r103833 = -5.96489584678373e+102;
bool r103834 = r103832 <= r103833;
double r103835 = -1.0;
double r103836 = r103835 * r103832;
double r103837 = 3.491682779851706e+70;
bool r103838 = r103832 <= r103837;
double r103839 = r103832 * r103832;
double r103840 = im;
double r103841 = r103840 * r103840;
double r103842 = r103839 + r103841;
double r103843 = sqrt(r103842);
double r103844 = r103838 ? r103843 : r103832;
double r103845 = r103834 ? r103836 : r103844;
return r103845;
}



Bits error versus re



Bits error versus im
Results
if re < -5.96489584678373e+102Initial program 53.0
Taylor expanded around -inf 10.2
if -5.96489584678373e+102 < re < 3.491682779851706e+70Initial program 22.2
if 3.491682779851706e+70 < re Initial program 47.4
Taylor expanded around inf 12.5
Final simplification18.4
herbie shell --seed 2020089
(FPCore (re im)
:name "math.abs on complex"
:precision binary64
(sqrt (+ (* re re) (* im im))))