\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -3.67861896250387831 \cdot 10^{116}:\\
\;\;\;\;-re\\
\mathbf{elif}\;re \le 5.04022683723403456 \cdot 10^{87}:\\
\;\;\;\;\sqrt{re \cdot re + im \cdot im}\\
\mathbf{else}:\\
\;\;\;\;{re}^{\left(-\sqrt[3]{-1}\right)}\\
\end{array}double f(double re, double im) {
double r48007 = re;
double r48008 = r48007 * r48007;
double r48009 = im;
double r48010 = r48009 * r48009;
double r48011 = r48008 + r48010;
double r48012 = sqrt(r48011);
return r48012;
}
double f(double re, double im) {
double r48013 = re;
double r48014 = -3.678618962503878e+116;
bool r48015 = r48013 <= r48014;
double r48016 = -r48013;
double r48017 = 5.0402268372340346e+87;
bool r48018 = r48013 <= r48017;
double r48019 = r48013 * r48013;
double r48020 = im;
double r48021 = r48020 * r48020;
double r48022 = r48019 + r48021;
double r48023 = sqrt(r48022);
double r48024 = -1.0;
double r48025 = cbrt(r48024);
double r48026 = -r48025;
double r48027 = pow(r48013, r48026);
double r48028 = r48018 ? r48023 : r48027;
double r48029 = r48015 ? r48016 : r48028;
return r48029;
}



Bits error versus re



Bits error versus im
Results
if re < -3.678618962503878e+116Initial program 54.0
Taylor expanded around -inf 10.1
Simplified10.1
if -3.678618962503878e+116 < re < 5.0402268372340346e+87Initial program 21.0
if 5.0402268372340346e+87 < re Initial program 50.4
rmApplied add-exp-log51.6
rmApplied add-cube-cbrt52.1
Applied exp-prod52.1
Taylor expanded around inf 64.0
Simplified11.3
Final simplification17.7
herbie shell --seed 2019195
(FPCore (re im)
:name "math.abs on complex"
(sqrt (+ (* re re) (* im im))))