\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 -4.3087254010389655 \cdot 10^{114}:\\
\;\;\;\;\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 1.72107814649001555 \cdot 10^{92}:\\
\;\;\;\;\frac{1}{\sqrt{\log base \cdot \log base + 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 r46913 = re;
double r46914 = r46913 * r46913;
double r46915 = im;
double r46916 = r46915 * r46915;
double r46917 = r46914 + r46916;
double r46918 = sqrt(r46917);
double r46919 = log(r46918);
double r46920 = base;
double r46921 = log(r46920);
double r46922 = r46919 * r46921;
double r46923 = atan2(r46915, r46913);
double r46924 = 0.0;
double r46925 = r46923 * r46924;
double r46926 = r46922 + r46925;
double r46927 = r46921 * r46921;
double r46928 = r46924 * r46924;
double r46929 = r46927 + r46928;
double r46930 = r46926 / r46929;
return r46930;
}
double f(double re, double im, double base) {
double r46931 = re;
double r46932 = -4.3087254010389655e+114;
bool r46933 = r46931 <= r46932;
double r46934 = -1.0;
double r46935 = r46934 * r46931;
double r46936 = log(r46935);
double r46937 = base;
double r46938 = log(r46937);
double r46939 = r46936 * r46938;
double r46940 = im;
double r46941 = atan2(r46940, r46931);
double r46942 = 0.0;
double r46943 = r46941 * r46942;
double r46944 = r46939 + r46943;
double r46945 = r46938 * r46938;
double r46946 = r46942 * r46942;
double r46947 = r46945 + r46946;
double r46948 = r46944 / r46947;
double r46949 = 1.7210781464900156e+92;
bool r46950 = r46931 <= r46949;
double r46951 = 1.0;
double r46952 = sqrt(r46947);
double r46953 = r46951 / r46952;
double r46954 = r46931 * r46931;
double r46955 = r46940 * r46940;
double r46956 = r46954 + r46955;
double r46957 = sqrt(r46956);
double r46958 = log(r46957);
double r46959 = r46958 * r46938;
double r46960 = r46959 + r46943;
double r46961 = r46960 / r46952;
double r46962 = r46953 * r46961;
double r46963 = r46951 / r46931;
double r46964 = log(r46963);
double r46965 = r46951 / r46937;
double r46966 = log(r46965);
double r46967 = r46964 / r46966;
double r46968 = r46950 ? r46962 : r46967;
double r46969 = r46933 ? r46948 : r46968;
return r46969;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -4.3087254010389655e+114Initial program 54.7
Taylor expanded around -inf 9.1
if -4.3087254010389655e+114 < re < 1.7210781464900156e+92Initial program 22.2
rmApplied add-sqr-sqrt22.2
Applied *-un-lft-identity22.2
Applied times-frac22.2
if 1.7210781464900156e+92 < re Initial program 49.8
Taylor expanded around inf 10.4
Final simplification18.0
herbie shell --seed 2020034
(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))))