\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -3.6980740601030615 \cdot 10^{63}:\\
\;\;\;\;\log \left(-1 \cdot re\right)\\
\mathbf{elif}\;re \le 9.1753737888878369 \cdot 10^{116}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r85842 = re;
double r85843 = r85842 * r85842;
double r85844 = im;
double r85845 = r85844 * r85844;
double r85846 = r85843 + r85845;
double r85847 = sqrt(r85846);
double r85848 = log(r85847);
return r85848;
}
double f(double re, double im) {
double r85849 = re;
double r85850 = -3.6980740601030615e+63;
bool r85851 = r85849 <= r85850;
double r85852 = -1.0;
double r85853 = r85852 * r85849;
double r85854 = log(r85853);
double r85855 = 9.175373788887837e+116;
bool r85856 = r85849 <= r85855;
double r85857 = r85849 * r85849;
double r85858 = im;
double r85859 = r85858 * r85858;
double r85860 = r85857 + r85859;
double r85861 = sqrt(r85860);
double r85862 = log(r85861);
double r85863 = log(r85849);
double r85864 = r85856 ? r85862 : r85863;
double r85865 = r85851 ? r85854 : r85864;
return r85865;
}



Bits error versus re



Bits error versus im
Results
if re < -3.6980740601030615e+63Initial program 46.0
Taylor expanded around -inf 9.4
if -3.6980740601030615e+63 < re < 9.175373788887837e+116Initial program 21.2
if 9.175373788887837e+116 < re Initial program 55.4
Taylor expanded around inf 8.4
Final simplification16.9
herbie shell --seed 2020064
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))