\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -6.6739378125203485 \cdot 10^{115}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le -5.71025445486617605 \cdot 10^{-174}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le -4.1151896437215007 \cdot 10^{-280}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 2.99476022231093984 \cdot 10^{87}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r21556 = re;
double r21557 = r21556 * r21556;
double r21558 = im;
double r21559 = r21558 * r21558;
double r21560 = r21557 + r21559;
double r21561 = sqrt(r21560);
double r21562 = log(r21561);
return r21562;
}
double f(double re, double im) {
double r21563 = re;
double r21564 = -6.6739378125203485e+115;
bool r21565 = r21563 <= r21564;
double r21566 = -r21563;
double r21567 = log(r21566);
double r21568 = -5.710254454866176e-174;
bool r21569 = r21563 <= r21568;
double r21570 = r21563 * r21563;
double r21571 = im;
double r21572 = r21571 * r21571;
double r21573 = r21570 + r21572;
double r21574 = sqrt(r21573);
double r21575 = log(r21574);
double r21576 = -4.1151896437215007e-280;
bool r21577 = r21563 <= r21576;
double r21578 = log(r21571);
double r21579 = 2.99476022231094e+87;
bool r21580 = r21563 <= r21579;
double r21581 = log(r21563);
double r21582 = r21580 ? r21575 : r21581;
double r21583 = r21577 ? r21578 : r21582;
double r21584 = r21569 ? r21575 : r21583;
double r21585 = r21565 ? r21567 : r21584;
return r21585;
}



Bits error versus re



Bits error versus im
Results
if re < -6.6739378125203485e+115Initial program 53.9
Taylor expanded around -inf 8.5
Simplified8.5
if -6.6739378125203485e+115 < re < -5.710254454866176e-174 or -4.1151896437215007e-280 < re < 2.99476022231094e+87Initial program 19.7
if -5.710254454866176e-174 < re < -4.1151896437215007e-280Initial program 31.4
Taylor expanded around 0 37.1
if 2.99476022231094e+87 < re Initial program 50.3
Taylor expanded around inf 9.5
Final simplification17.8
herbie shell --seed 2019195
(FPCore (re im)
:name "math.log/1 on complex, real part"
(log (sqrt (+ (* re re) (* im im)))))