\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 -9.5072677535921829 \cdot 10^{141}:\\
\;\;\;\;\frac{\log \left(-re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left({\left(\frac{1}{base}\right)}^{\frac{-1}{3}}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 1.9789961358533681 \cdot 10^{145}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left({\left(\frac{1}{base}\right)}^{\frac{-1}{3}}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r47764 = re;
double r47765 = r47764 * r47764;
double r47766 = im;
double r47767 = r47766 * r47766;
double r47768 = r47765 + r47767;
double r47769 = sqrt(r47768);
double r47770 = log(r47769);
double r47771 = base;
double r47772 = log(r47771);
double r47773 = r47770 * r47772;
double r47774 = atan2(r47766, r47764);
double r47775 = 0.0;
double r47776 = r47774 * r47775;
double r47777 = r47773 + r47776;
double r47778 = r47772 * r47772;
double r47779 = r47775 * r47775;
double r47780 = r47778 + r47779;
double r47781 = r47777 / r47780;
return r47781;
}
double f(double re, double im, double base) {
double r47782 = re;
double r47783 = -9.507267753592183e+141;
bool r47784 = r47782 <= r47783;
double r47785 = -r47782;
double r47786 = log(r47785);
double r47787 = base;
double r47788 = log(r47787);
double r47789 = r47786 * r47788;
double r47790 = im;
double r47791 = atan2(r47790, r47782);
double r47792 = 0.0;
double r47793 = r47791 * r47792;
double r47794 = r47789 + r47793;
double r47795 = 2.0;
double r47796 = 1.0;
double r47797 = r47796 / r47787;
double r47798 = -0.3333333333333333;
double r47799 = pow(r47797, r47798);
double r47800 = log(r47799);
double r47801 = r47795 * r47800;
double r47802 = r47788 * r47801;
double r47803 = cbrt(r47787);
double r47804 = log(r47803);
double r47805 = r47788 * r47804;
double r47806 = r47802 + r47805;
double r47807 = r47792 * r47792;
double r47808 = r47806 + r47807;
double r47809 = r47794 / r47808;
double r47810 = 1.978996135853368e+145;
bool r47811 = r47782 <= r47810;
double r47812 = r47782 * r47782;
double r47813 = r47790 * r47790;
double r47814 = r47812 + r47813;
double r47815 = sqrt(r47814);
double r47816 = log(r47815);
double r47817 = r47816 * r47788;
double r47818 = r47817 + r47793;
double r47819 = r47818 / r47808;
double r47820 = log(r47782);
double r47821 = -r47820;
double r47822 = -r47788;
double r47823 = r47821 / r47822;
double r47824 = r47811 ? r47819 : r47823;
double r47825 = r47784 ? r47809 : r47824;
return r47825;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -9.507267753592183e+141Initial program 60.0
rmApplied add-cube-cbrt60.0
Applied log-prod60.0
Applied distribute-lft-in60.0
Simplified60.0
Taylor expanded around inf 60.0
Taylor expanded around -inf 7.1
Simplified7.1
if -9.507267753592183e+141 < re < 1.978996135853368e+145Initial program 21.0
rmApplied add-cube-cbrt21.0
Applied log-prod21.0
Applied distribute-lft-in21.0
Simplified21.0
Taylor expanded around inf 21.0
if 1.978996135853368e+145 < re Initial program 61.6
Taylor expanded around inf 7.3
Simplified7.3
Final simplification17.3
herbie shell --seed 2020042
(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))))