\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 -7.07557702361520036 \cdot 10^{54}:\\
\;\;\;\;\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 -6.3360595030704328 \cdot 10^{-287}:\\
\;\;\;\;\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt{1}} \cdot \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}\\
\mathbf{elif}\;re \le 1.1087233082144876 \cdot 10^{-259}:\\
\;\;\;\;\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt{1}} \cdot \frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 4.4918944413865042 \cdot 10^{101}:\\
\;\;\;\;\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt{1}} \cdot \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt{1}} \cdot \frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\
\end{array}double f(double re, double im, double base) {
double r43963 = re;
double r43964 = r43963 * r43963;
double r43965 = im;
double r43966 = r43965 * r43965;
double r43967 = r43964 + r43966;
double r43968 = sqrt(r43967);
double r43969 = log(r43968);
double r43970 = base;
double r43971 = log(r43970);
double r43972 = r43969 * r43971;
double r43973 = atan2(r43965, r43963);
double r43974 = 0.0;
double r43975 = r43973 * r43974;
double r43976 = r43972 + r43975;
double r43977 = r43971 * r43971;
double r43978 = r43974 * r43974;
double r43979 = r43977 + r43978;
double r43980 = r43976 / r43979;
return r43980;
}
double f(double re, double im, double base) {
double r43981 = re;
double r43982 = -7.0755770236152e+54;
bool r43983 = r43981 <= r43982;
double r43984 = -1.0;
double r43985 = r43984 * r43981;
double r43986 = log(r43985);
double r43987 = base;
double r43988 = log(r43987);
double r43989 = r43986 * r43988;
double r43990 = im;
double r43991 = atan2(r43990, r43981);
double r43992 = 0.0;
double r43993 = r43991 * r43992;
double r43994 = r43989 + r43993;
double r43995 = r43988 * r43988;
double r43996 = r43992 * r43992;
double r43997 = r43995 + r43996;
double r43998 = r43994 / r43997;
double r43999 = -6.336059503070433e-287;
bool r44000 = r43981 <= r43999;
double r44001 = 1.0;
double r44002 = cbrt(r44001);
double r44003 = r44002 * r44002;
double r44004 = sqrt(r44001);
double r44005 = r44003 / r44004;
double r44006 = r43981 * r43981;
double r44007 = r43990 * r43990;
double r44008 = r44006 + r44007;
double r44009 = sqrt(r44008);
double r44010 = log(r44009);
double r44011 = r44010 * r43988;
double r44012 = r44011 + r43993;
double r44013 = 2.0;
double r44014 = pow(r43988, r44013);
double r44015 = r43996 + r44014;
double r44016 = r44012 / r44015;
double r44017 = r44005 * r44016;
double r44018 = 1.1087233082144876e-259;
bool r44019 = r43981 <= r44018;
double r44020 = log(r43990);
double r44021 = r44020 / r43988;
double r44022 = r44005 * r44021;
double r44023 = 4.491894441386504e+101;
bool r44024 = r43981 <= r44023;
double r44025 = r44001 / r43981;
double r44026 = log(r44025);
double r44027 = r44001 / r43987;
double r44028 = log(r44027);
double r44029 = r44026 / r44028;
double r44030 = r44005 * r44029;
double r44031 = r44024 ? r44017 : r44030;
double r44032 = r44019 ? r44022 : r44031;
double r44033 = r44000 ? r44017 : r44032;
double r44034 = r43983 ? r43998 : r44033;
return r44034;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -7.0755770236152e+54Initial program 46.2
Taylor expanded around -inf 11.5
if -7.0755770236152e+54 < re < -6.336059503070433e-287 or 1.1087233082144876e-259 < re < 4.491894441386504e+101Initial program 20.8
rmApplied add-sqr-sqrt20.8
Applied *-un-lft-identity20.8
Applied times-frac20.8
rmApplied *-un-lft-identity20.8
Applied sqrt-prod20.8
Applied add-cube-cbrt20.8
Applied times-frac20.8
Applied associate-*l*20.8
Simplified20.8
if -6.336059503070433e-287 < re < 1.1087233082144876e-259Initial program 32.6
rmApplied add-sqr-sqrt32.6
Applied *-un-lft-identity32.6
Applied times-frac32.6
rmApplied *-un-lft-identity32.6
Applied sqrt-prod32.6
Applied add-cube-cbrt32.6
Applied times-frac32.6
Applied associate-*l*32.6
Simplified32.6
Taylor expanded around 0 34.3
if 4.491894441386504e+101 < re Initial program 53.3
rmApplied add-sqr-sqrt53.3
Applied *-un-lft-identity53.3
Applied times-frac53.3
rmApplied *-un-lft-identity53.3
Applied sqrt-prod53.3
Applied add-cube-cbrt53.3
Applied times-frac53.3
Applied associate-*l*53.3
Simplified53.3
Taylor expanded around inf 9.1
Final simplification17.7
herbie shell --seed 2020020
(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))))