\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 -9.737457083335623306804331892125968495215 \cdot 10^{91}:\\
\;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log base \cdot \log \left(-re\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\
\mathbf{elif}\;re \le 2.190589872393484084231686358672553467985 \cdot 10^{99}:\\
\;\;\;\;\frac{\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log re \cdot \log base + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{0.0 \cdot 0.0 + \log base \cdot \log base}\\
\end{array}double f(double re, double im, double base) {
double r52981 = re;
double r52982 = r52981 * r52981;
double r52983 = im;
double r52984 = r52983 * r52983;
double r52985 = r52982 + r52984;
double r52986 = sqrt(r52985);
double r52987 = log(r52986);
double r52988 = base;
double r52989 = log(r52988);
double r52990 = r52987 * r52989;
double r52991 = atan2(r52983, r52981);
double r52992 = 0.0;
double r52993 = r52991 * r52992;
double r52994 = r52990 + r52993;
double r52995 = r52989 * r52989;
double r52996 = r52992 * r52992;
double r52997 = r52995 + r52996;
double r52998 = r52994 / r52997;
return r52998;
}
double f(double re, double im, double base) {
double r52999 = re;
double r53000 = -9.737457083335623e+91;
bool r53001 = r52999 <= r53000;
double r53002 = 0.0;
double r53003 = im;
double r53004 = atan2(r53003, r52999);
double r53005 = r53002 * r53004;
double r53006 = base;
double r53007 = log(r53006);
double r53008 = -r52999;
double r53009 = log(r53008);
double r53010 = r53007 * r53009;
double r53011 = r53005 + r53010;
double r53012 = r53002 * r53002;
double r53013 = 2.0;
double r53014 = pow(r53007, r53013);
double r53015 = r53012 + r53014;
double r53016 = sqrt(r53015);
double r53017 = r53011 / r53016;
double r53018 = 1.0;
double r53019 = r53018 / r53016;
double r53020 = r53017 * r53019;
double r53021 = 2.190589872393484e+99;
bool r53022 = r52999 <= r53021;
double r53023 = r53003 * r53003;
double r53024 = r52999 * r52999;
double r53025 = r53023 + r53024;
double r53026 = sqrt(r53025);
double r53027 = log(r53026);
double r53028 = r53007 * r53027;
double r53029 = r53005 + r53028;
double r53030 = r53029 / r53016;
double r53031 = r53007 * r53007;
double r53032 = r53012 + r53031;
double r53033 = sqrt(r53032);
double r53034 = r53030 / r53033;
double r53035 = log(r52999);
double r53036 = r53035 * r53007;
double r53037 = r53036 + r53005;
double r53038 = r53037 / r53032;
double r53039 = r53022 ? r53034 : r53038;
double r53040 = r53001 ? r53020 : r53039;
return r53040;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -9.737457083335623e+91Initial program 50.1
rmApplied add-sqr-sqrt50.1
Applied *-un-lft-identity50.1
Applied times-frac50.1
Simplified50.1
Simplified50.1
Taylor expanded around -inf 9.3
Simplified9.3
if -9.737457083335623e+91 < re < 2.190589872393484e+99Initial program 21.4
rmApplied add-sqr-sqrt21.4
Applied associate-/r*21.4
Simplified21.4
if 2.190589872393484e+99 < re Initial program 51.3
Taylor expanded around inf 9.9
Simplified9.9
Final simplification17.2
herbie shell --seed 2019196
(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))))