\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\begin{array}{l}
\mathbf{if}\;re \le -8.143203660913673329850871473806326387498 \cdot 10^{92}:\\
\;\;\;\;\frac{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 2.153930701766585709222248503120339127843 \cdot 10^{145}:\\
\;\;\;\;\frac{\frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\
\end{array}double f(double re, double im, double base) {
double r49684 = re;
double r49685 = r49684 * r49684;
double r49686 = im;
double r49687 = r49686 * r49686;
double r49688 = r49685 + r49687;
double r49689 = sqrt(r49688);
double r49690 = log(r49689);
double r49691 = base;
double r49692 = log(r49691);
double r49693 = r49690 * r49692;
double r49694 = atan2(r49686, r49684);
double r49695 = 0.0;
double r49696 = r49694 * r49695;
double r49697 = r49693 + r49696;
double r49698 = r49692 * r49692;
double r49699 = r49695 * r49695;
double r49700 = r49698 + r49699;
double r49701 = r49697 / r49700;
return r49701;
}
double f(double re, double im, double base) {
double r49702 = re;
double r49703 = -8.143203660913673e+92;
bool r49704 = r49702 <= r49703;
double r49705 = -1.0;
double r49706 = r49705 * r49702;
double r49707 = log(r49706);
double r49708 = base;
double r49709 = log(r49708);
double r49710 = r49707 * r49709;
double r49711 = im;
double r49712 = atan2(r49711, r49702);
double r49713 = 0.0;
double r49714 = r49712 * r49713;
double r49715 = r49710 + r49714;
double r49716 = r49709 * r49709;
double r49717 = r49713 * r49713;
double r49718 = r49716 + r49717;
double r49719 = r49715 / r49718;
double r49720 = 2.1539307017665857e+145;
bool r49721 = r49702 <= r49720;
double r49722 = r49702 * r49702;
double r49723 = r49711 * r49711;
double r49724 = r49722 + r49723;
double r49725 = sqrt(r49724);
double r49726 = cbrt(r49725);
double r49727 = r49726 * r49726;
double r49728 = r49727 * r49726;
double r49729 = log(r49728);
double r49730 = r49729 * r49709;
double r49731 = r49730 + r49714;
double r49732 = sqrt(r49718);
double r49733 = r49731 / r49732;
double r49734 = r49733 / r49732;
double r49735 = 1.0;
double r49736 = r49735 / r49702;
double r49737 = log(r49736);
double r49738 = r49735 / r49708;
double r49739 = log(r49738);
double r49740 = r49737 / r49739;
double r49741 = r49721 ? r49734 : r49740;
double r49742 = r49704 ? r49719 : r49741;
return r49742;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -8.143203660913673e+92Initial program 51.0
Taylor expanded around -inf 9.4
if -8.143203660913673e+92 < re < 2.1539307017665857e+145Initial program 21.7
rmApplied add-sqr-sqrt21.7
Applied associate-/r*21.6
rmApplied add-cube-cbrt21.7
if 2.1539307017665857e+145 < re Initial program 61.0
Taylor expanded around inf 7.1
Final simplification17.4
herbie shell --seed 2019322
(FPCore (re im base)
:name "math.log/2 on complex, real part"
:precision binary64
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))