\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 -1.144600521445903 \cdot 10^{+98}:\\
\;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log \left(\frac{-1}{re}\right) \cdot -2}}\\
\mathbf{elif}\;re \le -2.7249016889670465 \cdot 10^{-212}:\\
\;\;\;\;\frac{\frac{1}{2}}{\log base \cdot \frac{1}{\log \left(im \cdot im + re \cdot re\right)}}\\
\mathbf{elif}\;re \le -9.044826970858667 \cdot 10^{-305}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 6.270425502185955 \cdot 10^{+140}:\\
\;\;\;\;\frac{\frac{1}{2}}{\log base \cdot \frac{1}{\log \left(im \cdot im + re \cdot re\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log re}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r768975 = re;
double r768976 = r768975 * r768975;
double r768977 = im;
double r768978 = r768977 * r768977;
double r768979 = r768976 + r768978;
double r768980 = sqrt(r768979);
double r768981 = log(r768980);
double r768982 = base;
double r768983 = log(r768982);
double r768984 = r768981 * r768983;
double r768985 = atan2(r768977, r768975);
double r768986 = 0.0;
double r768987 = r768985 * r768986;
double r768988 = r768984 + r768987;
double r768989 = r768983 * r768983;
double r768990 = r768986 * r768986;
double r768991 = r768989 + r768990;
double r768992 = r768988 / r768991;
return r768992;
}
double f(double re, double im, double base) {
double r768993 = re;
double r768994 = -1.144600521445903e+98;
bool r768995 = r768993 <= r768994;
double r768996 = 0.5;
double r768997 = base;
double r768998 = log(r768997);
double r768999 = -1.0;
double r769000 = r768999 / r768993;
double r769001 = log(r769000);
double r769002 = -2.0;
double r769003 = r769001 * r769002;
double r769004 = r768998 / r769003;
double r769005 = r768996 / r769004;
double r769006 = -2.7249016889670465e-212;
bool r769007 = r768993 <= r769006;
double r769008 = 1.0;
double r769009 = im;
double r769010 = r769009 * r769009;
double r769011 = r768993 * r768993;
double r769012 = r769010 + r769011;
double r769013 = log(r769012);
double r769014 = r769008 / r769013;
double r769015 = r768998 * r769014;
double r769016 = r768996 / r769015;
double r769017 = -9.044826970858667e-305;
bool r769018 = r768993 <= r769017;
double r769019 = log(r769009);
double r769020 = r769019 / r768998;
double r769021 = 6.270425502185955e+140;
bool r769022 = r768993 <= r769021;
double r769023 = log(r768993);
double r769024 = r769023 / r768998;
double r769025 = r769022 ? r769016 : r769024;
double r769026 = r769018 ? r769020 : r769025;
double r769027 = r769007 ? r769016 : r769026;
double r769028 = r768995 ? r769005 : r769027;
return r769028;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.144600521445903e+98Initial program 49.3
Simplified49.2
rmApplied pow1/249.2
Applied log-pow49.2
Applied associate-/l*49.2
Taylor expanded around -inf 8.6
Simplified8.6
if -1.144600521445903e+98 < re < -2.7249016889670465e-212 or -9.044826970858667e-305 < re < 6.270425502185955e+140Initial program 19.6
Simplified19.5
rmApplied pow1/219.5
Applied log-pow19.5
Applied associate-/l*19.6
rmApplied clear-num19.6
rmApplied associate-/r/19.6
if -2.7249016889670465e-212 < re < -9.044826970858667e-305Initial program 32.1
Simplified32.0
rmApplied pow1/232.0
Applied log-pow32.0
Applied associate-/l*32.0
rmApplied clear-num32.0
Taylor expanded around 0 32.7
if 6.270425502185955e+140 < re Initial program 58.6
Simplified58.6
Taylor expanded around inf 6.5
Final simplification16.9
herbie shell --seed 2019151
(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))))