\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -8.039547558546271631628934502111036051442 \cdot 10^{104}:\\
\;\;\;\;-re\\
\mathbf{elif}\;re \le -3.240034389533803828723034610715031267776 \cdot 10^{-262}:\\
\;\;\;\;\sqrt{im \cdot im + re \cdot re}\\
\mathbf{elif}\;re \le 2.715396324398381567593668375558902625339 \cdot 10^{-222}:\\
\;\;\;\;im\\
\mathbf{elif}\;re \le 2.683247713446899747987853789973400736076 \cdot 10^{123}:\\
\;\;\;\;\sqrt{im \cdot im + re \cdot re}\\
\mathbf{else}:\\
\;\;\;\;re\\
\end{array}double f(double re, double im) {
double r1626127 = re;
double r1626128 = r1626127 * r1626127;
double r1626129 = im;
double r1626130 = r1626129 * r1626129;
double r1626131 = r1626128 + r1626130;
double r1626132 = sqrt(r1626131);
return r1626132;
}
double f(double re, double im) {
double r1626133 = re;
double r1626134 = -8.039547558546272e+104;
bool r1626135 = r1626133 <= r1626134;
double r1626136 = -r1626133;
double r1626137 = -3.240034389533804e-262;
bool r1626138 = r1626133 <= r1626137;
double r1626139 = im;
double r1626140 = r1626139 * r1626139;
double r1626141 = r1626133 * r1626133;
double r1626142 = r1626140 + r1626141;
double r1626143 = sqrt(r1626142);
double r1626144 = 2.7153963243983816e-222;
bool r1626145 = r1626133 <= r1626144;
double r1626146 = 2.6832477134469e+123;
bool r1626147 = r1626133 <= r1626146;
double r1626148 = r1626147 ? r1626143 : r1626133;
double r1626149 = r1626145 ? r1626139 : r1626148;
double r1626150 = r1626138 ? r1626143 : r1626149;
double r1626151 = r1626135 ? r1626136 : r1626150;
return r1626151;
}



Bits error versus re



Bits error versus im
Results
if re < -8.039547558546272e+104Initial program 52.4
Taylor expanded around -inf 9.5
Simplified9.5
if -8.039547558546272e+104 < re < -3.240034389533804e-262 or 2.7153963243983816e-222 < re < 2.6832477134469e+123Initial program 19.0
if -3.240034389533804e-262 < re < 2.7153963243983816e-222Initial program 32.1
Taylor expanded around 0 31.4
if 2.6832477134469e+123 < re Initial program 55.3
Taylor expanded around inf 8.3
Final simplification17.1
herbie shell --seed 2019200
(FPCore (re im)
:name "math.abs on complex"
(sqrt (+ (* re re) (* im im))))