\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\begin{array}{l}
\mathbf{if}\;re \le -3.912111704121843 \cdot 10^{+74}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\
\mathbf{elif}\;re \le -1.610831336314797 \cdot 10^{-195}:\\
\;\;\;\;\frac{\log \left(\left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right) \cdot \left(\sqrt[3]{\sqrt{\sqrt{im \cdot im + re \cdot re}}} \cdot \sqrt[3]{\sqrt{\sqrt{im \cdot im + re \cdot re}}}\right)\right)}{\log base}\\
\mathbf{elif}\;re \le -4.64950550008063 \cdot 10^{-304}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 2.1214141144086502 \cdot 10^{+101}:\\
\;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log re}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r1946945 = re;
double r1946946 = r1946945 * r1946945;
double r1946947 = im;
double r1946948 = r1946947 * r1946947;
double r1946949 = r1946946 + r1946948;
double r1946950 = sqrt(r1946949);
double r1946951 = log(r1946950);
double r1946952 = base;
double r1946953 = log(r1946952);
double r1946954 = r1946951 * r1946953;
double r1946955 = atan2(r1946947, r1946945);
double r1946956 = 0.0;
double r1946957 = r1946955 * r1946956;
double r1946958 = r1946954 + r1946957;
double r1946959 = r1946953 * r1946953;
double r1946960 = r1946956 * r1946956;
double r1946961 = r1946959 + r1946960;
double r1946962 = r1946958 / r1946961;
return r1946962;
}
double f(double re, double im, double base) {
double r1946963 = re;
double r1946964 = -3.912111704121843e+74;
bool r1946965 = r1946963 <= r1946964;
double r1946966 = -r1946963;
double r1946967 = log(r1946966);
double r1946968 = base;
double r1946969 = log(r1946968);
double r1946970 = r1946967 / r1946969;
double r1946971 = -1.610831336314797e-195;
bool r1946972 = r1946963 <= r1946971;
double r1946973 = im;
double r1946974 = r1946973 * r1946973;
double r1946975 = r1946963 * r1946963;
double r1946976 = r1946974 + r1946975;
double r1946977 = sqrt(r1946976);
double r1946978 = cbrt(r1946977);
double r1946979 = r1946978 * r1946978;
double r1946980 = sqrt(r1946977);
double r1946981 = cbrt(r1946980);
double r1946982 = r1946981 * r1946981;
double r1946983 = r1946979 * r1946982;
double r1946984 = log(r1946983);
double r1946985 = r1946984 / r1946969;
double r1946986 = -4.64950550008063e-304;
bool r1946987 = r1946963 <= r1946986;
double r1946988 = log(r1946973);
double r1946989 = r1946988 / r1946969;
double r1946990 = 2.1214141144086502e+101;
bool r1946991 = r1946963 <= r1946990;
double r1946992 = log(r1946977);
double r1946993 = r1946969 * r1946992;
double r1946994 = atan2(r1946973, r1946963);
double r1946995 = 0.0;
double r1946996 = r1946994 * r1946995;
double r1946997 = r1946993 + r1946996;
double r1946998 = r1946969 * r1946969;
double r1946999 = r1946997 / r1946998;
double r1947000 = log(r1946963);
double r1947001 = r1947000 / r1946969;
double r1947002 = r1946991 ? r1946999 : r1947001;
double r1947003 = r1946987 ? r1946989 : r1947002;
double r1947004 = r1946972 ? r1946985 : r1947003;
double r1947005 = r1946965 ? r1946970 : r1947004;
return r1947005;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -3.912111704121843e+74Initial program 45.6
Simplified45.6
Taylor expanded around -inf 10.2
Simplified10.2
if -3.912111704121843e+74 < re < -1.610831336314797e-195Initial program 17.5
Simplified17.4
rmApplied add-cube-cbrt17.4
rmApplied add-sqr-sqrt17.4
Applied sqrt-prod17.4
Applied cbrt-prod17.4
if -1.610831336314797e-195 < re < -4.64950550008063e-304Initial program 28.4
Simplified28.3
Taylor expanded around 0 34.1
if -4.64950550008063e-304 < re < 2.1214141144086502e+101Initial program 21.2
if 2.1214141144086502e+101 < re Initial program 50.1
Simplified50.1
Taylor expanded around inf 8.6
Final simplification17.3
herbie shell --seed 2019162
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0))))