\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -7.94133120904831091 \cdot 10^{23}:\\
\;\;\;\;\log \left(-1 \cdot re\right)\\
\mathbf{elif}\;re \le -1.05078470045216924 \cdot 10^{-159}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le 4.3626224287444165 \cdot 10^{-306}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 43187.278897220196:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r37671 = re;
double r37672 = r37671 * r37671;
double r37673 = im;
double r37674 = r37673 * r37673;
double r37675 = r37672 + r37674;
double r37676 = sqrt(r37675);
double r37677 = log(r37676);
return r37677;
}
double f(double re, double im) {
double r37678 = re;
double r37679 = -7.941331209048311e+23;
bool r37680 = r37678 <= r37679;
double r37681 = -1.0;
double r37682 = r37681 * r37678;
double r37683 = log(r37682);
double r37684 = -1.0507847004521692e-159;
bool r37685 = r37678 <= r37684;
double r37686 = r37678 * r37678;
double r37687 = im;
double r37688 = r37687 * r37687;
double r37689 = r37686 + r37688;
double r37690 = sqrt(r37689);
double r37691 = log(r37690);
double r37692 = 4.3626224287444165e-306;
bool r37693 = r37678 <= r37692;
double r37694 = log(r37687);
double r37695 = 43187.278897220196;
bool r37696 = r37678 <= r37695;
double r37697 = log(r37678);
double r37698 = r37696 ? r37691 : r37697;
double r37699 = r37693 ? r37694 : r37698;
double r37700 = r37685 ? r37691 : r37699;
double r37701 = r37680 ? r37683 : r37700;
return r37701;
}



Bits error versus re



Bits error versus im
Results
if re < -7.941331209048311e+23Initial program 41.9
Taylor expanded around -inf 11.8
if -7.941331209048311e+23 < re < -1.0507847004521692e-159 or 4.3626224287444165e-306 < re < 43187.278897220196Initial program 20.7
if -1.0507847004521692e-159 < re < 4.3626224287444165e-306Initial program 31.3
Taylor expanded around 0 35.2
if 43187.278897220196 < re Initial program 41.2
Taylor expanded around inf 12.8
Final simplification18.5
herbie shell --seed 2020020
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))