\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 -7.59904696746250469 \cdot 10^{146}:\\
\;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + \sqrt[3]{{\left(\log base\right)}^{6}}}} \cdot \frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(-re\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\
\mathbf{elif}\;re \le 5.36772892383815877 \cdot 10^{-207}:\\
\;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}} \cdot \frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \left(\log base \cdot \log \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right|\right) + \log base \cdot \log \left(\sqrt{\sqrt[3]{re \cdot re + im \cdot im}}\right)\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\
\mathbf{elif}\;re \le 2.1974199628881544 \cdot 10^{-67}:\\
\;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log im}{{\left(\log base\right)}^{4} - {0.0}^{3} \cdot 0.0} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\
\mathbf{elif}\;re \le 4130730593743547.5:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r76984 = re;
double r76985 = r76984 * r76984;
double r76986 = im;
double r76987 = r76986 * r76986;
double r76988 = r76985 + r76987;
double r76989 = sqrt(r76988);
double r76990 = log(r76989);
double r76991 = base;
double r76992 = log(r76991);
double r76993 = r76990 * r76992;
double r76994 = atan2(r76986, r76984);
double r76995 = 0.0;
double r76996 = r76994 * r76995;
double r76997 = r76993 + r76996;
double r76998 = r76992 * r76992;
double r76999 = r76995 * r76995;
double r77000 = r76998 + r76999;
double r77001 = r76997 / r77000;
return r77001;
}
double f(double re, double im, double base) {
double r77002 = re;
double r77003 = -7.599046967462505e+146;
bool r77004 = r77002 <= r77003;
double r77005 = 1.0;
double r77006 = 0.0;
double r77007 = r77006 * r77006;
double r77008 = base;
double r77009 = log(r77008);
double r77010 = 6.0;
double r77011 = pow(r77009, r77010);
double r77012 = cbrt(r77011);
double r77013 = r77007 + r77012;
double r77014 = sqrt(r77013);
double r77015 = r77005 / r77014;
double r77016 = im;
double r77017 = atan2(r77016, r77002);
double r77018 = r77017 * r77006;
double r77019 = -r77002;
double r77020 = log(r77019);
double r77021 = r77009 * r77020;
double r77022 = r77018 + r77021;
double r77023 = 2.0;
double r77024 = pow(r77009, r77023);
double r77025 = r77007 + r77024;
double r77026 = sqrt(r77025);
double r77027 = r77022 / r77026;
double r77028 = r77015 * r77027;
double r77029 = 5.367728923838159e-207;
bool r77030 = r77002 <= r77029;
double r77031 = r77005 / r77026;
double r77032 = r77002 * r77002;
double r77033 = r77016 * r77016;
double r77034 = r77032 + r77033;
double r77035 = cbrt(r77034);
double r77036 = fabs(r77035);
double r77037 = log(r77036);
double r77038 = r77009 * r77037;
double r77039 = sqrt(r77035);
double r77040 = log(r77039);
double r77041 = r77009 * r77040;
double r77042 = r77038 + r77041;
double r77043 = r77018 + r77042;
double r77044 = r77043 / r77026;
double r77045 = r77031 * r77044;
double r77046 = 2.1974199628881544e-67;
bool r77047 = r77002 <= r77046;
double r77048 = log(r77016);
double r77049 = r77009 * r77048;
double r77050 = r77018 + r77049;
double r77051 = 4.0;
double r77052 = pow(r77009, r77051);
double r77053 = 3.0;
double r77054 = pow(r77006, r77053);
double r77055 = r77054 * r77006;
double r77056 = r77052 - r77055;
double r77057 = r77050 / r77056;
double r77058 = r77009 * r77009;
double r77059 = r77058 - r77007;
double r77060 = r77057 * r77059;
double r77061 = 4130730593743547.5;
bool r77062 = r77002 <= r77061;
double r77063 = sqrt(r77034);
double r77064 = log(r77063);
double r77065 = r77064 * r77009;
double r77066 = r77065 + r77018;
double r77067 = cbrt(r77008);
double r77068 = log(r77067);
double r77069 = r77023 * r77068;
double r77070 = r77009 * r77069;
double r77071 = r77009 * r77068;
double r77072 = r77070 + r77071;
double r77073 = r77072 + r77007;
double r77074 = r77066 / r77073;
double r77075 = log(r77002);
double r77076 = -r77075;
double r77077 = -r77009;
double r77078 = r77076 / r77077;
double r77079 = r77062 ? r77074 : r77078;
double r77080 = r77047 ? r77060 : r77079;
double r77081 = r77030 ? r77045 : r77080;
double r77082 = r77004 ? r77028 : r77081;
return r77082;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -7.599046967462505e+146Initial program 62.5
rmApplied add-sqr-sqrt62.5
Applied *-un-lft-identity62.5
Applied times-frac62.5
Simplified62.5
Simplified62.5
rmApplied add-cbrt-cube62.5
Simplified62.5
Taylor expanded around -inf 7.5
Simplified7.5
if -7.599046967462505e+146 < re < 5.367728923838159e-207Initial program 22.8
rmApplied add-sqr-sqrt22.8
Applied *-un-lft-identity22.8
Applied times-frac22.8
Simplified22.8
Simplified22.8
rmApplied add-cube-cbrt22.8
Applied sqrt-prod22.8
Applied log-prod22.9
Applied distribute-lft-in22.9
Simplified22.9
if 5.367728923838159e-207 < re < 2.1974199628881544e-67Initial program 22.6
rmApplied flip-+22.6
Applied associate-/r/22.6
Simplified22.7
Taylor expanded around 0 41.4
if 2.1974199628881544e-67 < re < 4130730593743547.5Initial program 15.6
rmApplied add-cube-cbrt15.6
Applied log-prod15.6
Applied distribute-lft-in15.6
Simplified15.6
if 4130730593743547.5 < re Initial program 41.1
Taylor expanded around inf 13.3
Simplified13.3
Final simplification20.3
herbie shell --seed 2020045
(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))))