\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -6.435791861848148 \cdot 10^{+153}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le 7.07576562131624 \cdot 10^{-253}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{elif}\;re \le 3.6038808942744265 \cdot 10^{-158}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 2.5731787747213785 \cdot 10^{+101}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r2043771 = re;
double r2043772 = r2043771 * r2043771;
double r2043773 = im;
double r2043774 = r2043773 * r2043773;
double r2043775 = r2043772 + r2043774;
double r2043776 = sqrt(r2043775);
double r2043777 = log(r2043776);
return r2043777;
}
double f(double re, double im) {
double r2043778 = re;
double r2043779 = -6.435791861848148e+153;
bool r2043780 = r2043778 <= r2043779;
double r2043781 = -r2043778;
double r2043782 = log(r2043781);
double r2043783 = 7.07576562131624e-253;
bool r2043784 = r2043778 <= r2043783;
double r2043785 = im;
double r2043786 = r2043785 * r2043785;
double r2043787 = r2043778 * r2043778;
double r2043788 = r2043786 + r2043787;
double r2043789 = sqrt(r2043788);
double r2043790 = log(r2043789);
double r2043791 = 3.6038808942744265e-158;
bool r2043792 = r2043778 <= r2043791;
double r2043793 = log(r2043785);
double r2043794 = 2.5731787747213785e+101;
bool r2043795 = r2043778 <= r2043794;
double r2043796 = log(r2043778);
double r2043797 = r2043795 ? r2043790 : r2043796;
double r2043798 = r2043792 ? r2043793 : r2043797;
double r2043799 = r2043784 ? r2043790 : r2043798;
double r2043800 = r2043780 ? r2043782 : r2043799;
return r2043800;
}



Bits error versus re



Bits error versus im
Results
if re < -6.435791861848148e+153Initial program 61.9
Taylor expanded around -inf 6.6
Simplified6.6
if -6.435791861848148e+153 < re < 7.07576562131624e-253 or 3.6038808942744265e-158 < re < 2.5731787747213785e+101Initial program 18.9
if 7.07576562131624e-253 < re < 3.6038808942744265e-158Initial program 29.9
Taylor expanded around 0 35.6
if 2.5731787747213785e+101 < re Initial program 50.6
Taylor expanded around inf 9.4
Final simplification17.0
herbie shell --seed 2019128
(FPCore (re im)
:name "math.log/1 on complex, real part"
(log (sqrt (+ (* re re) (* im im)))))