\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 -16436.105427898932:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\
\mathbf{elif}\;re \le -2.289233214842376 \cdot 10^{-234}:\\
\;\;\;\;\frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right) \cdot \log base + 0 \cdot \tan^{-1}_* \frac{im}{re}}{\log base \cdot \log base}\\
\mathbf{elif}\;re \le -1.7888060498818623 \cdot 10^{-307}:\\
\;\;\;\;\frac{1}{\frac{\log base}{\log base} \cdot \frac{\log base}{\log im}}\\
\mathbf{elif}\;re \le 1.923554289447892 \cdot 10^{+55}:\\
\;\;\;\;\frac{1}{\frac{\log base}{\log base} \cdot \frac{\log base}{\log \left(\sqrt{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 r1183017 = re;
double r1183018 = r1183017 * r1183017;
double r1183019 = im;
double r1183020 = r1183019 * r1183019;
double r1183021 = r1183018 + r1183020;
double r1183022 = sqrt(r1183021);
double r1183023 = log(r1183022);
double r1183024 = base;
double r1183025 = log(r1183024);
double r1183026 = r1183023 * r1183025;
double r1183027 = atan2(r1183019, r1183017);
double r1183028 = 0.0;
double r1183029 = r1183027 * r1183028;
double r1183030 = r1183026 + r1183029;
double r1183031 = r1183025 * r1183025;
double r1183032 = r1183028 * r1183028;
double r1183033 = r1183031 + r1183032;
double r1183034 = r1183030 / r1183033;
return r1183034;
}
double f(double re, double im, double base) {
double r1183035 = re;
double r1183036 = -16436.105427898932;
bool r1183037 = r1183035 <= r1183036;
double r1183038 = -r1183035;
double r1183039 = log(r1183038);
double r1183040 = base;
double r1183041 = log(r1183040);
double r1183042 = r1183039 / r1183041;
double r1183043 = -2.289233214842376e-234;
bool r1183044 = r1183035 <= r1183043;
double r1183045 = im;
double r1183046 = r1183045 * r1183045;
double r1183047 = r1183035 * r1183035;
double r1183048 = r1183046 + r1183047;
double r1183049 = sqrt(r1183048);
double r1183050 = log(r1183049);
double r1183051 = r1183050 * r1183041;
double r1183052 = 0.0;
double r1183053 = atan2(r1183045, r1183035);
double r1183054 = r1183052 * r1183053;
double r1183055 = r1183051 + r1183054;
double r1183056 = r1183041 * r1183041;
double r1183057 = r1183055 / r1183056;
double r1183058 = -1.7888060498818623e-307;
bool r1183059 = r1183035 <= r1183058;
double r1183060 = 1.0;
double r1183061 = r1183041 / r1183041;
double r1183062 = log(r1183045);
double r1183063 = r1183041 / r1183062;
double r1183064 = r1183061 * r1183063;
double r1183065 = r1183060 / r1183064;
double r1183066 = 1.923554289447892e+55;
bool r1183067 = r1183035 <= r1183066;
double r1183068 = r1183041 / r1183050;
double r1183069 = r1183061 * r1183068;
double r1183070 = r1183060 / r1183069;
double r1183071 = log(r1183035);
double r1183072 = r1183071 / r1183041;
double r1183073 = r1183067 ? r1183070 : r1183072;
double r1183074 = r1183059 ? r1183065 : r1183073;
double r1183075 = r1183044 ? r1183057 : r1183074;
double r1183076 = r1183037 ? r1183042 : r1183075;
return r1183076;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -16436.105427898932Initial program 38.5
Simplified38.4
Taylor expanded around -inf 13.3
Simplified13.3
if -16436.105427898932 < re < -2.289233214842376e-234Initial program 19.6
if -2.289233214842376e-234 < re < -1.7888060498818623e-307Initial program 30.7
rmApplied clear-num30.8
Simplified30.7
Taylor expanded around 0 35.9
if -1.7888060498818623e-307 < re < 1.923554289447892e+55Initial program 22.1
rmApplied clear-num22.1
Simplified22.0
if 1.923554289447892e+55 < re Initial program 43.8
Simplified43.7
Taylor expanded around inf 10.1
Final simplification17.7
herbie shell --seed 2019155
(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))))