double f(double re, double im) {
double r1682152 = re;
double r1682153 = r1682152 * r1682152;
double r1682154 = im;
double r1682155 = r1682154 * r1682154;
double r1682156 = r1682153 + r1682155;
double r1682157 = sqrt(r1682156);
return r1682157;
}
double f(double re, double im) {
double r1682158 = re;
double r1682159 = -4.129850026901925e+87;
bool r1682160 = r1682158 <= r1682159;
double r1682161 = -r1682158;
double r1682162 = 9.783014267098546e+150;
bool r1682163 = r1682158 <= r1682162;
double r1682164 = im;
double r1682165 = r1682164 * r1682164;
double r1682166 = r1682158 * r1682158;
double r1682167 = r1682165 + r1682166;
double r1682168 = sqrt(r1682167);
double r1682169 = r1682163 ? r1682168 : r1682158;
double r1682170 = r1682160 ? r1682161 : r1682169;
return r1682170;
}
\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -4.129850026901925 \cdot 10^{+87}:\\
\;\;\;\;-re\\
\mathbf{elif}\;re \le 9.783014267098546 \cdot 10^{+150}:\\
\;\;\;\;\sqrt{im \cdot im + re \cdot re}\\
\mathbf{else}:\\
\;\;\;\;re\\
\end{array}


Bits error versus re



Bits error versus im
if re < -4.129850026901925e+87Initial program 45.9
Taylor expanded around -inf 10.4
Simplified10.4
if -4.129850026901925e+87 < re < 9.783014267098546e+150Initial program 19.5
if 9.783014267098546e+150 < re Initial program 58.2
Taylor expanded around inf 8.4
Final simplification16.5
herbie shell --seed 2019101
(FPCore (re im)
:name "math.abs on complex"
(sqrt (+ (* re re) (* im im))))