\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -2.8015950926867568 \cdot 10^{144}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le -2.603232334857776 \cdot 10^{-212}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le -5.74125170767144492 \cdot 10^{-228}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le 4.4853367152010175 \cdot 10^{105}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r42754 = re;
double r42755 = r42754 * r42754;
double r42756 = im;
double r42757 = r42756 * r42756;
double r42758 = r42755 + r42757;
double r42759 = sqrt(r42758);
double r42760 = log(r42759);
return r42760;
}
double f(double re, double im) {
double r42761 = re;
double r42762 = -2.8015950926867568e+144;
bool r42763 = r42761 <= r42762;
double r42764 = -r42761;
double r42765 = log(r42764);
double r42766 = -2.6032323348577763e-212;
bool r42767 = r42761 <= r42766;
double r42768 = r42761 * r42761;
double r42769 = im;
double r42770 = r42769 * r42769;
double r42771 = r42768 + r42770;
double r42772 = sqrt(r42771);
double r42773 = log(r42772);
double r42774 = -5.741251707671445e-228;
bool r42775 = r42761 <= r42774;
double r42776 = 4.4853367152010175e+105;
bool r42777 = r42761 <= r42776;
double r42778 = log(r42761);
double r42779 = r42777 ? r42773 : r42778;
double r42780 = r42775 ? r42765 : r42779;
double r42781 = r42767 ? r42773 : r42780;
double r42782 = r42763 ? r42765 : r42781;
return r42782;
}



Bits error versus re



Bits error versus im
Results
if re < -2.8015950926867568e+144 or -2.6032323348577763e-212 < re < -5.741251707671445e-228Initial program 57.8
Taylor expanded around -inf 11.0
Simplified11.0
if -2.8015950926867568e+144 < re < -2.6032323348577763e-212 or -5.741251707671445e-228 < re < 4.4853367152010175e+105Initial program 20.9
if 4.4853367152010175e+105 < re Initial program 51.2
Taylor expanded around inf 7.9
Final simplification17.4
herbie shell --seed 2020045
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))