\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.737740429468826036821242422394075266484 \cdot 10^{80}:\\
\;\;\;\;\frac{\log \left(\frac{-1}{re}\right)}{\log base} \cdot -1\\
\mathbf{elif}\;re \le -3.566193270276073522987212393629657483145 \cdot 10^{-214}:\\
\;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \left(\log base + \log base\right) \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 1.816298243183373130006182388120925906125 \cdot 10^{-199}:\\
\;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log im \cdot \log base}{0.0 \cdot 0.0 + \log base \cdot \log base}\\
\mathbf{elif}\;re \le 3.499633159282764357460607627307150268823 \cdot 10^{118}:\\
\;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + \log base \cdot \log base}{\left(\left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) + \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(\left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)\right)} \cdot \left(\left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) + \left(\left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r1945958 = re;
double r1945959 = r1945958 * r1945958;
double r1945960 = im;
double r1945961 = r1945960 * r1945960;
double r1945962 = r1945959 + r1945961;
double r1945963 = sqrt(r1945962);
double r1945964 = log(r1945963);
double r1945965 = base;
double r1945966 = log(r1945965);
double r1945967 = r1945964 * r1945966;
double r1945968 = atan2(r1945960, r1945958);
double r1945969 = 0.0;
double r1945970 = r1945968 * r1945969;
double r1945971 = r1945967 + r1945970;
double r1945972 = r1945966 * r1945966;
double r1945973 = r1945969 * r1945969;
double r1945974 = r1945972 + r1945973;
double r1945975 = r1945971 / r1945974;
return r1945975;
}
double f(double re, double im, double base) {
double r1945976 = re;
double r1945977 = -1.737740429468826e+80;
bool r1945978 = r1945976 <= r1945977;
double r1945979 = -1.0;
double r1945980 = r1945979 / r1945976;
double r1945981 = log(r1945980);
double r1945982 = base;
double r1945983 = log(r1945982);
double r1945984 = r1945981 / r1945983;
double r1945985 = r1945984 * r1945979;
double r1945986 = -3.5661932702760735e-214;
bool r1945987 = r1945976 <= r1945986;
double r1945988 = im;
double r1945989 = r1945988 * r1945988;
double r1945990 = r1945976 * r1945976;
double r1945991 = r1945989 + r1945990;
double r1945992 = sqrt(r1945991);
double r1945993 = log(r1945992);
double r1945994 = r1945983 * r1945993;
double r1945995 = atan2(r1945988, r1945976);
double r1945996 = 0.0;
double r1945997 = r1945995 * r1945996;
double r1945998 = r1945994 + r1945997;
double r1945999 = cbrt(r1945982);
double r1946000 = log(r1945999);
double r1946001 = r1945983 * r1946000;
double r1946002 = r1945983 + r1945983;
double r1946003 = r1946002 * r1946000;
double r1946004 = r1946001 + r1946003;
double r1946005 = r1945996 * r1945996;
double r1946006 = r1946004 + r1946005;
double r1946007 = r1945998 / r1946006;
double r1946008 = 1.8162982431833731e-199;
bool r1946009 = r1945976 <= r1946008;
double r1946010 = log(r1945988);
double r1946011 = r1946010 * r1945983;
double r1946012 = r1945997 + r1946011;
double r1946013 = r1945983 * r1945983;
double r1946014 = r1946005 + r1946013;
double r1946015 = r1946012 / r1946014;
double r1946016 = 3.4996331592827644e+118;
bool r1946017 = r1945976 <= r1946016;
double r1946018 = 1.0;
double r1946019 = r1945997 * r1945997;
double r1946020 = r1946019 * r1945997;
double r1946021 = r1945994 * r1945994;
double r1946022 = r1945994 * r1946021;
double r1946023 = r1946020 + r1946022;
double r1946024 = r1946014 / r1946023;
double r1946025 = r1945997 * r1945994;
double r1946026 = r1946019 - r1946025;
double r1946027 = r1946021 + r1946026;
double r1946028 = r1946024 * r1946027;
double r1946029 = r1946018 / r1946028;
double r1946030 = log(r1945976);
double r1946031 = -r1946030;
double r1946032 = -r1945983;
double r1946033 = r1946031 / r1946032;
double r1946034 = r1946017 ? r1946029 : r1946033;
double r1946035 = r1946009 ? r1946015 : r1946034;
double r1946036 = r1945987 ? r1946007 : r1946035;
double r1946037 = r1945978 ? r1945985 : r1946036;
return r1946037;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.737740429468826e+80Initial program 47.8
Taylor expanded around -inf 64.0
Simplified10.1
if -1.737740429468826e+80 < re < -3.5661932702760735e-214Initial program 19.2
rmApplied add-cube-cbrt19.2
Applied log-prod19.2
Applied distribute-rgt-in19.2
Simplified19.2
if -3.5661932702760735e-214 < re < 1.8162982431833731e-199Initial program 31.5
Taylor expanded around 0 33.7
if 1.8162982431833731e-199 < re < 3.4996331592827644e+118Initial program 18.5
rmApplied clear-num18.5
rmApplied flip3-+18.6
Applied associate-/r/18.6
Simplified18.6
if 3.4996331592827644e+118 < re Initial program 54.7
Taylor expanded around inf 7.7
Simplified7.7
Final simplification18.0
herbie shell --seed 2019172
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))