\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 -2.296946323958964096679477790246928648788 \cdot 10^{83}:\\
\;\;\;\;\frac{\frac{\left(-1 \cdot \log \left(\frac{-1}{re}\right)\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{elif}\;re \le 3.074698948448111476331693807825779933874 \cdot 10^{124}:\\
\;\;\;\;\frac{1}{\sqrt{\left(\log base \cdot \left(2 \cdot \log \left({base}^{\frac{1}{3}}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}} \cdot \frac{\log \left(\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}}\\
\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 r46998 = re;
double r46999 = r46998 * r46998;
double r47000 = im;
double r47001 = r47000 * r47000;
double r47002 = r46999 + r47001;
double r47003 = sqrt(r47002);
double r47004 = log(r47003);
double r47005 = base;
double r47006 = log(r47005);
double r47007 = r47004 * r47006;
double r47008 = atan2(r47000, r46998);
double r47009 = 0.0;
double r47010 = r47008 * r47009;
double r47011 = r47007 + r47010;
double r47012 = r47006 * r47006;
double r47013 = r47009 * r47009;
double r47014 = r47012 + r47013;
double r47015 = r47011 / r47014;
return r47015;
}
double f(double re, double im, double base) {
double r47016 = re;
double r47017 = -2.296946323958964e+83;
bool r47018 = r47016 <= r47017;
double r47019 = -1.0;
double r47020 = r47019 / r47016;
double r47021 = log(r47020);
double r47022 = r47019 * r47021;
double r47023 = base;
double r47024 = log(r47023);
double r47025 = r47022 * r47024;
double r47026 = im;
double r47027 = atan2(r47026, r47016);
double r47028 = 0.0;
double r47029 = r47027 * r47028;
double r47030 = r47025 + r47029;
double r47031 = r47024 * r47024;
double r47032 = r47028 * r47028;
double r47033 = r47031 + r47032;
double r47034 = sqrt(r47033);
double r47035 = r47030 / r47034;
double r47036 = r47035 / r47034;
double r47037 = 3.0746989484481115e+124;
bool r47038 = r47016 <= r47037;
double r47039 = 1.0;
double r47040 = 2.0;
double r47041 = 0.3333333333333333;
double r47042 = pow(r47023, r47041);
double r47043 = log(r47042);
double r47044 = r47040 * r47043;
double r47045 = r47024 * r47044;
double r47046 = cbrt(r47023);
double r47047 = log(r47046);
double r47048 = r47024 * r47047;
double r47049 = r47045 + r47048;
double r47050 = r47049 + r47032;
double r47051 = sqrt(r47050);
double r47052 = r47039 / r47051;
double r47053 = r47016 * r47016;
double r47054 = r47026 * r47026;
double r47055 = r47053 + r47054;
double r47056 = sqrt(r47055);
double r47057 = log(r47056);
double r47058 = r47057 * r47024;
double r47059 = r47058 + r47029;
double r47060 = r47059 / r47034;
double r47061 = r47052 * r47060;
double r47062 = r47039 / r47016;
double r47063 = log(r47062);
double r47064 = r47039 / r47023;
double r47065 = log(r47064);
double r47066 = r47063 / r47065;
double r47067 = r47038 ? r47061 : r47066;
double r47068 = r47018 ? r47036 : r47067;
return r47068;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.296946323958964e+83Initial program 48.3
rmApplied add-sqr-sqrt48.3
Applied associate-/r*48.3
Taylor expanded around -inf 64.0
Simplified9.0
if -2.296946323958964e+83 < re < 3.0746989484481115e+124Initial program 21.7
rmApplied add-sqr-sqrt21.7
Applied *-un-lft-identity21.7
Applied times-frac21.7
rmApplied add-cube-cbrt21.7
Applied log-prod21.7
Applied distribute-lft-in21.7
Simplified21.7
rmApplied pow1/321.7
if 3.0746989484481115e+124 < re Initial program 56.1
Taylor expanded around inf 8.7
Final simplification17.6
herbie shell --seed 2019352
(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))))