\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 -3.9103492295191627 \cdot 10^{69}:\\
\;\;\;\;\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.69396852746052055 \cdot 10^{50}:\\
\;\;\;\;\frac{\frac{\log \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right| \cdot \sqrt{{\left(re \cdot re + im \cdot im\right)}^{\frac{1}{3}}}\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 r46758 = re;
double r46759 = r46758 * r46758;
double r46760 = im;
double r46761 = r46760 * r46760;
double r46762 = r46759 + r46761;
double r46763 = sqrt(r46762);
double r46764 = log(r46763);
double r46765 = base;
double r46766 = log(r46765);
double r46767 = r46764 * r46766;
double r46768 = atan2(r46760, r46758);
double r46769 = 0.0;
double r46770 = r46768 * r46769;
double r46771 = r46767 + r46770;
double r46772 = r46766 * r46766;
double r46773 = r46769 * r46769;
double r46774 = r46772 + r46773;
double r46775 = r46771 / r46774;
return r46775;
}
double f(double re, double im, double base) {
double r46776 = re;
double r46777 = -3.910349229519163e+69;
bool r46778 = r46776 <= r46777;
double r46779 = -1.0;
double r46780 = r46779 * r46776;
double r46781 = log(r46780);
double r46782 = base;
double r46783 = log(r46782);
double r46784 = r46781 * r46783;
double r46785 = im;
double r46786 = atan2(r46785, r46776);
double r46787 = 0.0;
double r46788 = r46786 * r46787;
double r46789 = r46784 + r46788;
double r46790 = r46783 * r46783;
double r46791 = r46787 * r46787;
double r46792 = r46790 + r46791;
double r46793 = r46789 / r46792;
double r46794 = 2.6939685274605205e+50;
bool r46795 = r46776 <= r46794;
double r46796 = r46776 * r46776;
double r46797 = r46785 * r46785;
double r46798 = r46796 + r46797;
double r46799 = cbrt(r46798);
double r46800 = fabs(r46799);
double r46801 = 0.3333333333333333;
double r46802 = pow(r46798, r46801);
double r46803 = sqrt(r46802);
double r46804 = r46800 * r46803;
double r46805 = log(r46804);
double r46806 = r46805 * r46783;
double r46807 = r46806 + r46788;
double r46808 = sqrt(r46792);
double r46809 = r46807 / r46808;
double r46810 = r46809 / r46808;
double r46811 = 1.0;
double r46812 = r46811 / r46776;
double r46813 = log(r46812);
double r46814 = r46811 / r46782;
double r46815 = log(r46814);
double r46816 = r46813 / r46815;
double r46817 = r46795 ? r46810 : r46816;
double r46818 = r46778 ? r46793 : r46817;
return r46818;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -3.910349229519163e+69Initial program 48.1
Taylor expanded around -inf 10.7
if -3.910349229519163e+69 < re < 2.6939685274605205e+50Initial program 22.5
rmApplied add-sqr-sqrt22.5
Applied associate-/r*22.4
rmApplied add-cube-cbrt22.4
Applied sqrt-prod22.4
Simplified22.4
rmApplied pow1/322.4
if 2.6939685274605205e+50 < re Initial program 45.9
Taylor expanded around inf 12.1
Final simplification17.9
herbie shell --seed 2020083
(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))))