\sqrt{re \cdot re + im \cdot im}\begin{array}{l}
\mathbf{if}\;re \le -1.2918446586536957 \cdot 10^{+154}:\\
\;\;\;\;-re\\
\mathbf{elif}\;re \le -2.6219396713989246 \cdot 10^{+28}:\\
\;\;\;\;\sqrt{im \cdot im + re \cdot re}\\
\mathbf{elif}\;re \le -3.209519593925633 \cdot 10^{-28}:\\
\;\;\;\;im\\
\mathbf{elif}\;re \le -8.056228658328031 \cdot 10^{-199}:\\
\;\;\;\;\sqrt{im \cdot im + re \cdot re}\\
\mathbf{elif}\;re \le -3.759150523562943 \cdot 10^{-268}:\\
\;\;\;\;im\\
\mathbf{elif}\;re \le 1.4301923552016937 \cdot 10^{+155}:\\
\;\;\;\;\sqrt{im \cdot im + re \cdot re}\\
\mathbf{else}:\\
\;\;\;\;re\\
\end{array}double f(double re, double im) {
double r3593353 = re;
double r3593354 = r3593353 * r3593353;
double r3593355 = im;
double r3593356 = r3593355 * r3593355;
double r3593357 = r3593354 + r3593356;
double r3593358 = sqrt(r3593357);
return r3593358;
}
double f(double re, double im) {
double r3593359 = re;
double r3593360 = -1.2918446586536957e+154;
bool r3593361 = r3593359 <= r3593360;
double r3593362 = -r3593359;
double r3593363 = -2.6219396713989246e+28;
bool r3593364 = r3593359 <= r3593363;
double r3593365 = im;
double r3593366 = r3593365 * r3593365;
double r3593367 = r3593359 * r3593359;
double r3593368 = r3593366 + r3593367;
double r3593369 = sqrt(r3593368);
double r3593370 = -3.209519593925633e-28;
bool r3593371 = r3593359 <= r3593370;
double r3593372 = -8.056228658328031e-199;
bool r3593373 = r3593359 <= r3593372;
double r3593374 = -3.759150523562943e-268;
bool r3593375 = r3593359 <= r3593374;
double r3593376 = 1.4301923552016937e+155;
bool r3593377 = r3593359 <= r3593376;
double r3593378 = r3593377 ? r3593369 : r3593359;
double r3593379 = r3593375 ? r3593365 : r3593378;
double r3593380 = r3593373 ? r3593369 : r3593379;
double r3593381 = r3593371 ? r3593365 : r3593380;
double r3593382 = r3593364 ? r3593369 : r3593381;
double r3593383 = r3593361 ? r3593362 : r3593382;
return r3593383;
}



Bits error versus re



Bits error versus im
Results
if re < -1.2918446586536957e+154Initial program 59.4
Taylor expanded around -inf 7.0
Simplified7.0
if -1.2918446586536957e+154 < re < -2.6219396713989246e+28 or -3.209519593925633e-28 < re < -8.056228658328031e-199 or -3.759150523562943e-268 < re < 1.4301923552016937e+155Initial program 19.1
if -2.6219396713989246e+28 < re < -3.209519593925633e-28 or -8.056228658328031e-199 < re < -3.759150523562943e-268Initial program 23.9
Taylor expanded around 0 40.8
if 1.4301923552016937e+155 < re Initial program 59.5
Taylor expanded around inf 7.0
Final simplification18.2
herbie shell --seed 2019162
(FPCore (re im)
:name "math.abs on complex"
(sqrt (+ (* re re) (* im im))))