\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -3.809146632081261456055697196886220676549 \cdot 10^{47}:\\
\;\;\;\;\log \left(-1 \cdot re\right)\\
\mathbf{elif}\;re \le -5.899676996224969797473356094348485392996 \cdot 10^{-185}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le 2.570866863735433156870358275922364395788 \cdot 10^{-296}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 3.629021834301344361694623304417316639458 \cdot 10^{121}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r81513 = re;
double r81514 = r81513 * r81513;
double r81515 = im;
double r81516 = r81515 * r81515;
double r81517 = r81514 + r81516;
double r81518 = sqrt(r81517);
double r81519 = log(r81518);
return r81519;
}
double f(double re, double im) {
double r81520 = re;
double r81521 = -3.8091466320812615e+47;
bool r81522 = r81520 <= r81521;
double r81523 = -1.0;
double r81524 = r81523 * r81520;
double r81525 = log(r81524);
double r81526 = -5.89967699622497e-185;
bool r81527 = r81520 <= r81526;
double r81528 = r81520 * r81520;
double r81529 = im;
double r81530 = r81529 * r81529;
double r81531 = r81528 + r81530;
double r81532 = sqrt(r81531);
double r81533 = log(r81532);
double r81534 = 2.570866863735433e-296;
bool r81535 = r81520 <= r81534;
double r81536 = log(r81529);
double r81537 = 3.6290218343013444e+121;
bool r81538 = r81520 <= r81537;
double r81539 = log(r81520);
double r81540 = r81538 ? r81533 : r81539;
double r81541 = r81535 ? r81536 : r81540;
double r81542 = r81527 ? r81533 : r81541;
double r81543 = r81522 ? r81525 : r81542;
return r81543;
}



Bits error versus re



Bits error versus im
Results
if re < -3.8091466320812615e+47Initial program 44.7
Taylor expanded around -inf 11.1
if -3.8091466320812615e+47 < re < -5.89967699622497e-185 or 2.570866863735433e-296 < re < 3.6290218343013444e+121Initial program 19.8
if -5.89967699622497e-185 < re < 2.570866863735433e-296Initial program 31.3
Taylor expanded around 0 33.7
if 3.6290218343013444e+121 < re Initial program 55.6
Taylor expanded around inf 7.7
Final simplification17.6
herbie shell --seed 2019318
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))