\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 -1.7042958239457753 \cdot 10^{88}:\\
\;\;\;\;\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 7.9040050084905754 \cdot 10^{120}:\\
\;\;\;\;\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(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 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 r49971 = re;
double r49972 = r49971 * r49971;
double r49973 = im;
double r49974 = r49973 * r49973;
double r49975 = r49972 + r49974;
double r49976 = sqrt(r49975);
double r49977 = log(r49976);
double r49978 = base;
double r49979 = log(r49978);
double r49980 = r49977 * r49979;
double r49981 = atan2(r49973, r49971);
double r49982 = 0.0;
double r49983 = r49981 * r49982;
double r49984 = r49980 + r49983;
double r49985 = r49979 * r49979;
double r49986 = r49982 * r49982;
double r49987 = r49985 + r49986;
double r49988 = r49984 / r49987;
return r49988;
}
double f(double re, double im, double base) {
double r49989 = re;
double r49990 = -1.7042958239457753e+88;
bool r49991 = r49989 <= r49990;
double r49992 = -1.0;
double r49993 = r49992 * r49989;
double r49994 = log(r49993);
double r49995 = base;
double r49996 = log(r49995);
double r49997 = r49994 * r49996;
double r49998 = im;
double r49999 = atan2(r49998, r49989);
double r50000 = 0.0;
double r50001 = r49999 * r50000;
double r50002 = r49997 + r50001;
double r50003 = r49996 * r49996;
double r50004 = r50000 * r50000;
double r50005 = r50003 + r50004;
double r50006 = r50002 / r50005;
double r50007 = 7.904005008490575e+120;
bool r50008 = r49989 <= r50007;
double r50009 = r49989 * r49989;
double r50010 = r49998 * r49998;
double r50011 = r50009 + r50010;
double r50012 = sqrt(r50011);
double r50013 = log(r50012);
double r50014 = r50013 * r49996;
double r50015 = r50014 + r50001;
double r50016 = 2.0;
double r50017 = cbrt(r49995);
double r50018 = log(r50017);
double r50019 = r50016 * r50018;
double r50020 = r49996 * r50019;
double r50021 = r49996 * r50018;
double r50022 = r50020 + r50021;
double r50023 = r50022 + r50004;
double r50024 = r50015 / r50023;
double r50025 = 1.0;
double r50026 = r50025 / r49989;
double r50027 = log(r50026);
double r50028 = r50025 / r49995;
double r50029 = log(r50028);
double r50030 = r50027 / r50029;
double r50031 = r50008 ? r50024 : r50030;
double r50032 = r49991 ? r50006 : r50031;
return r50032;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.7042958239457753e+88Initial program 51.0
Taylor expanded around -inf 10.1
if -1.7042958239457753e+88 < re < 7.904005008490575e+120Initial program 21.8
rmApplied add-cube-cbrt21.8
Applied log-prod21.8
Applied distribute-lft-in21.8
Simplified21.8
if 7.904005008490575e+120 < re Initial program 55.1
Taylor expanded around inf 7.7
Final simplification17.6
herbie shell --seed 2020062
(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))))