\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -5.83181885032133734 \cdot 10^{55}:\\
\;\;\;\;\log \left(-1 \cdot re\right)\\
\mathbf{elif}\;re \le -3.80996693730795831 \cdot 10^{-103}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le 2.88566167285968699 \cdot 10^{-297}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 3.32569577851814611 \cdot 10^{94}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r73554 = re;
double r73555 = r73554 * r73554;
double r73556 = im;
double r73557 = r73556 * r73556;
double r73558 = r73555 + r73557;
double r73559 = sqrt(r73558);
double r73560 = log(r73559);
return r73560;
}
double f(double re, double im) {
double r73561 = re;
double r73562 = -5.831818850321337e+55;
bool r73563 = r73561 <= r73562;
double r73564 = -1.0;
double r73565 = r73564 * r73561;
double r73566 = log(r73565);
double r73567 = -3.8099669373079583e-103;
bool r73568 = r73561 <= r73567;
double r73569 = r73561 * r73561;
double r73570 = im;
double r73571 = r73570 * r73570;
double r73572 = r73569 + r73571;
double r73573 = sqrt(r73572);
double r73574 = log(r73573);
double r73575 = 2.885661672859687e-297;
bool r73576 = r73561 <= r73575;
double r73577 = log(r73570);
double r73578 = 3.325695778518146e+94;
bool r73579 = r73561 <= r73578;
double r73580 = log(r73561);
double r73581 = r73579 ? r73574 : r73580;
double r73582 = r73576 ? r73577 : r73581;
double r73583 = r73568 ? r73574 : r73582;
double r73584 = r73563 ? r73566 : r73583;
return r73584;
}



Bits error versus re



Bits error versus im
Results
if re < -5.831818850321337e+55Initial program 44.4
Taylor expanded around -inf 10.5
if -5.831818850321337e+55 < re < -3.8099669373079583e-103 or 2.885661672859687e-297 < re < 3.325695778518146e+94Initial program 19.4
if -3.8099669373079583e-103 < re < 2.885661672859687e-297Initial program 28.5
Taylor expanded around 0 35.8
if 3.325695778518146e+94 < re Initial program 50.1
Taylor expanded around inf 8.7
Final simplification18.6
herbie shell --seed 2020100
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))