\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -5.9648958467837301 \cdot 10^{102}:\\
\;\;\;\;\log \left(-1 \cdot re\right)\\
\mathbf{elif}\;re \le 2.3223338671593632 \cdot 10^{-278}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le 9.7861409713485531 \cdot 10^{-239}:\\
\;\;\;\;\log re\\
\mathbf{elif}\;re \le 3.1269387827755257 \cdot 10^{72}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r31524 = re;
double r31525 = r31524 * r31524;
double r31526 = im;
double r31527 = r31526 * r31526;
double r31528 = r31525 + r31527;
double r31529 = sqrt(r31528);
double r31530 = log(r31529);
return r31530;
}
double f(double re, double im) {
double r31531 = re;
double r31532 = -5.96489584678373e+102;
bool r31533 = r31531 <= r31532;
double r31534 = -1.0;
double r31535 = r31534 * r31531;
double r31536 = log(r31535);
double r31537 = 2.3223338671593632e-278;
bool r31538 = r31531 <= r31537;
double r31539 = r31531 * r31531;
double r31540 = im;
double r31541 = r31540 * r31540;
double r31542 = r31539 + r31541;
double r31543 = sqrt(r31542);
double r31544 = log(r31543);
double r31545 = 9.786140971348553e-239;
bool r31546 = r31531 <= r31545;
double r31547 = log(r31531);
double r31548 = 3.1269387827755257e+72;
bool r31549 = r31531 <= r31548;
double r31550 = r31549 ? r31544 : r31547;
double r31551 = r31546 ? r31547 : r31550;
double r31552 = r31538 ? r31544 : r31551;
double r31553 = r31533 ? r31536 : r31552;
return r31553;
}



Bits error versus re



Bits error versus im
Results
if re < -5.96489584678373e+102Initial program 53.0
Taylor expanded around -inf 8.6
if -5.96489584678373e+102 < re < 2.3223338671593632e-278 or 9.786140971348553e-239 < re < 3.1269387827755257e+72Initial program 21.9
if 2.3223338671593632e-278 < re < 9.786140971348553e-239 or 3.1269387827755257e+72 < re Initial program 45.5
Taylor expanded around inf 16.8
Final simplification18.6
herbie shell --seed 2020089
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))