\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{\log im}{\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(\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) + \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \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(\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 r1944992 = re;
double r1944993 = r1944992 * r1944992;
double r1944994 = im;
double r1944995 = r1944994 * r1944994;
double r1944996 = r1944993 + r1944995;
double r1944997 = sqrt(r1944996);
double r1944998 = log(r1944997);
double r1944999 = base;
double r1945000 = log(r1944999);
double r1945001 = r1944998 * r1945000;
double r1945002 = atan2(r1944994, r1944992);
double r1945003 = 0.0;
double r1945004 = r1945002 * r1945003;
double r1945005 = r1945001 + r1945004;
double r1945006 = r1945000 * r1945000;
double r1945007 = r1945003 * r1945003;
double r1945008 = r1945006 + r1945007;
double r1945009 = r1945005 / r1945008;
return r1945009;
}
double f(double re, double im, double base) {
double r1945010 = re;
double r1945011 = -1.737740429468826e+80;
bool r1945012 = r1945010 <= r1945011;
double r1945013 = -1.0;
double r1945014 = r1945013 / r1945010;
double r1945015 = log(r1945014);
double r1945016 = base;
double r1945017 = log(r1945016);
double r1945018 = r1945015 / r1945017;
double r1945019 = r1945018 * r1945013;
double r1945020 = -3.5661932702760735e-214;
bool r1945021 = r1945010 <= r1945020;
double r1945022 = im;
double r1945023 = r1945022 * r1945022;
double r1945024 = r1945010 * r1945010;
double r1945025 = r1945023 + r1945024;
double r1945026 = sqrt(r1945025);
double r1945027 = log(r1945026);
double r1945028 = r1945017 * r1945027;
double r1945029 = atan2(r1945022, r1945010);
double r1945030 = 0.0;
double r1945031 = r1945029 * r1945030;
double r1945032 = r1945028 + r1945031;
double r1945033 = cbrt(r1945016);
double r1945034 = log(r1945033);
double r1945035 = r1945017 * r1945034;
double r1945036 = r1945017 + r1945017;
double r1945037 = r1945036 * r1945034;
double r1945038 = r1945035 + r1945037;
double r1945039 = r1945030 * r1945030;
double r1945040 = r1945038 + r1945039;
double r1945041 = r1945032 / r1945040;
double r1945042 = 1.8162982431833731e-199;
bool r1945043 = r1945010 <= r1945042;
double r1945044 = log(r1945022);
double r1945045 = r1945044 / r1945017;
double r1945046 = 3.4996331592827644e+118;
bool r1945047 = r1945010 <= r1945046;
double r1945048 = 1.0;
double r1945049 = r1945017 * r1945017;
double r1945050 = r1945039 + r1945049;
double r1945051 = r1945028 * r1945028;
double r1945052 = r1945028 * r1945051;
double r1945053 = r1945031 * r1945031;
double r1945054 = r1945031 * r1945053;
double r1945055 = r1945052 + r1945054;
double r1945056 = r1945050 / r1945055;
double r1945057 = r1945031 * r1945028;
double r1945058 = r1945053 - r1945057;
double r1945059 = r1945051 + r1945058;
double r1945060 = r1945056 * r1945059;
double r1945061 = r1945048 / r1945060;
double r1945062 = log(r1945010);
double r1945063 = -r1945062;
double r1945064 = -r1945017;
double r1945065 = r1945063 / r1945064;
double r1945066 = r1945047 ? r1945061 : r1945065;
double r1945067 = r1945043 ? r1945045 : r1945066;
double r1945068 = r1945021 ? r1945041 : r1945067;
double r1945069 = r1945012 ? r1945019 : r1945068;
return r1945069;
}



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-lft-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))))