\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.1225739876249368 \cdot 10^{21}:\\
\;\;\;\;\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 -4.27711132562022042 \cdot 10^{-185}:\\
\;\;\;\;\frac{\frac{\log \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right| \cdot \sqrt{\sqrt[3]{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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le 3.510677278861231 \cdot 10^{-284}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 5.9451169291533458 \cdot 10^{55}:\\
\;\;\;\;\frac{\frac{\log \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right| \cdot \sqrt{\sqrt[3]{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}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right) \cdot \log \left(\frac{1}{base}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\end{array}double f(double re, double im, double base) {
double r50925 = re;
double r50926 = r50925 * r50925;
double r50927 = im;
double r50928 = r50927 * r50927;
double r50929 = r50926 + r50928;
double r50930 = sqrt(r50929);
double r50931 = log(r50930);
double r50932 = base;
double r50933 = log(r50932);
double r50934 = r50931 * r50933;
double r50935 = atan2(r50927, r50925);
double r50936 = 0.0;
double r50937 = r50935 * r50936;
double r50938 = r50934 + r50937;
double r50939 = r50933 * r50933;
double r50940 = r50936 * r50936;
double r50941 = r50939 + r50940;
double r50942 = r50938 / r50941;
return r50942;
}
double f(double re, double im, double base) {
double r50943 = re;
double r50944 = -1.1225739876249368e+21;
bool r50945 = r50943 <= r50944;
double r50946 = -1.0;
double r50947 = r50946 / r50943;
double r50948 = log(r50947);
double r50949 = r50946 * r50948;
double r50950 = base;
double r50951 = log(r50950);
double r50952 = r50949 * r50951;
double r50953 = im;
double r50954 = atan2(r50953, r50943);
double r50955 = 0.0;
double r50956 = r50954 * r50955;
double r50957 = r50952 + r50956;
double r50958 = r50951 * r50951;
double r50959 = r50955 * r50955;
double r50960 = r50958 + r50959;
double r50961 = sqrt(r50960);
double r50962 = r50957 / r50961;
double r50963 = r50962 / r50961;
double r50964 = -4.2771113256202204e-185;
bool r50965 = r50943 <= r50964;
double r50966 = r50943 * r50943;
double r50967 = r50953 * r50953;
double r50968 = r50966 + r50967;
double r50969 = cbrt(r50968);
double r50970 = fabs(r50969);
double r50971 = sqrt(r50969);
double r50972 = r50970 * r50971;
double r50973 = log(r50972);
double r50974 = r50973 * r50951;
double r50975 = r50974 + r50956;
double r50976 = r50975 / r50961;
double r50977 = r50976 / r50961;
double r50978 = 3.510677278861231e-284;
bool r50979 = r50943 <= r50978;
double r50980 = log(r50953);
double r50981 = r50980 / r50951;
double r50982 = 5.945116929153346e+55;
bool r50983 = r50943 <= r50982;
double r50984 = 1.0;
double r50985 = r50984 / r50943;
double r50986 = log(r50985);
double r50987 = r50984 / r50950;
double r50988 = log(r50987);
double r50989 = r50986 * r50988;
double r50990 = r50989 + r50956;
double r50991 = r50990 / r50960;
double r50992 = r50983 ? r50977 : r50991;
double r50993 = r50979 ? r50981 : r50992;
double r50994 = r50965 ? r50977 : r50993;
double r50995 = r50945 ? r50963 : r50994;
return r50995;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.1225739876249368e+21Initial program 43.2
rmApplied add-sqr-sqrt43.2
Applied associate-/r*43.2
Taylor expanded around -inf 64.0
Simplified12.5
if -1.1225739876249368e+21 < re < -4.2771113256202204e-185 or 3.510677278861231e-284 < re < 5.945116929153346e+55Initial program 20.3
rmApplied add-sqr-sqrt20.3
Applied associate-/r*20.2
rmApplied add-cube-cbrt20.2
Applied sqrt-prod20.2
Simplified20.2
if -4.2771113256202204e-185 < re < 3.510677278861231e-284Initial program 32.3
Taylor expanded around 0 35.1
if 5.945116929153346e+55 < re Initial program 45.5
Taylor expanded around inf 10.8
Final simplification18.3
herbie shell --seed 2020057
(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))))