\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.42917404433079806 \cdot 10^{69}:\\
\;\;\;\;\left(\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 8.0839755213983261 \cdot 10^{121}:\\
\;\;\;\;\frac{1}{\sqrt{\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}} \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 r41863 = re;
double r41864 = r41863 * r41863;
double r41865 = im;
double r41866 = r41865 * r41865;
double r41867 = r41864 + r41866;
double r41868 = sqrt(r41867);
double r41869 = log(r41868);
double r41870 = base;
double r41871 = log(r41870);
double r41872 = r41869 * r41871;
double r41873 = atan2(r41865, r41863);
double r41874 = 0.0;
double r41875 = r41873 * r41874;
double r41876 = r41872 + r41875;
double r41877 = r41871 * r41871;
double r41878 = r41874 * r41874;
double r41879 = r41877 + r41878;
double r41880 = r41876 / r41879;
return r41880;
}
double f(double re, double im, double base) {
double r41881 = re;
double r41882 = -2.429174044330798e+69;
bool r41883 = r41881 <= r41882;
double r41884 = -1.0;
double r41885 = r41884 * r41881;
double r41886 = log(r41885);
double r41887 = base;
double r41888 = log(r41887);
double r41889 = r41886 * r41888;
double r41890 = im;
double r41891 = atan2(r41890, r41881);
double r41892 = 0.0;
double r41893 = r41891 * r41892;
double r41894 = r41889 + r41893;
double r41895 = 1.0;
double r41896 = r41888 * r41888;
double r41897 = r41892 * r41892;
double r41898 = r41896 + r41897;
double r41899 = r41895 / r41898;
double r41900 = r41894 * r41899;
double r41901 = 8.083975521398326e+121;
bool r41902 = r41881 <= r41901;
double r41903 = 2.0;
double r41904 = cbrt(r41887);
double r41905 = log(r41904);
double r41906 = r41903 * r41905;
double r41907 = r41888 * r41906;
double r41908 = r41888 * r41905;
double r41909 = r41907 + r41908;
double r41910 = r41909 + r41897;
double r41911 = sqrt(r41910);
double r41912 = r41895 / r41911;
double r41913 = r41881 * r41881;
double r41914 = r41890 * r41890;
double r41915 = r41913 + r41914;
double r41916 = sqrt(r41915);
double r41917 = log(r41916);
double r41918 = r41917 * r41888;
double r41919 = r41918 + r41893;
double r41920 = sqrt(r41898);
double r41921 = r41919 / r41920;
double r41922 = r41912 * r41921;
double r41923 = r41895 / r41881;
double r41924 = log(r41923);
double r41925 = r41895 / r41887;
double r41926 = log(r41925);
double r41927 = r41924 / r41926;
double r41928 = r41902 ? r41922 : r41927;
double r41929 = r41883 ? r41900 : r41928;
return r41929;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.429174044330798e+69Initial program 47.1
rmApplied div-inv47.1
Taylor expanded around -inf 10.6
if -2.429174044330798e+69 < re < 8.083975521398326e+121Initial program 22.3
rmApplied add-sqr-sqrt22.3
Applied *-un-lft-identity22.3
Applied times-frac22.3
rmApplied add-cube-cbrt22.3
Applied log-prod22.3
Applied distribute-lft-in22.3
Simplified22.3
if 8.083975521398326e+121 < re Initial program 55.4
Taylor expanded around inf 8.1
Final simplification18.0
herbie shell --seed 2020064
(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))))