\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 -2.3057006723590237 \cdot 10^{+36}:\\
\;\;\;\;\log \left(\frac{-1}{re}\right) \cdot \frac{-1}{\log base}\\
\mathbf{elif}\;re \le -9.067057945334835 \cdot 10^{-44}:\\
\;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)}\\
\mathbf{elif}\;re \le -9.011225477962846 \cdot 10^{-70}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le -1.4793624276825383 \cdot 10^{-232}:\\
\;\;\;\;\frac{\log base \cdot \log \left(\sqrt{\sqrt[3]{im \cdot im + re \cdot re}} \cdot \left|\sqrt[3]{im \cdot im + re \cdot re}\right|\right)}{\log base \cdot \log base}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r3750176 = re;
double r3750177 = r3750176 * r3750176;
double r3750178 = im;
double r3750179 = r3750178 * r3750178;
double r3750180 = r3750177 + r3750179;
double r3750181 = sqrt(r3750180);
double r3750182 = log(r3750181);
double r3750183 = base;
double r3750184 = log(r3750183);
double r3750185 = r3750182 * r3750184;
double r3750186 = atan2(r3750178, r3750176);
double r3750187 = 0.0;
double r3750188 = r3750186 * r3750187;
double r3750189 = r3750185 + r3750188;
double r3750190 = r3750184 * r3750184;
double r3750191 = r3750187 * r3750187;
double r3750192 = r3750190 + r3750191;
double r3750193 = r3750189 / r3750192;
return r3750193;
}
double f(double re, double im, double base) {
double r3750194 = re;
double r3750195 = -2.3057006723590237e+36;
bool r3750196 = r3750194 <= r3750195;
double r3750197 = -1.0;
double r3750198 = r3750197 / r3750194;
double r3750199 = log(r3750198);
double r3750200 = base;
double r3750201 = log(r3750200);
double r3750202 = r3750197 / r3750201;
double r3750203 = r3750199 * r3750202;
double r3750204 = -9.067057945334835e-44;
bool r3750205 = r3750194 <= r3750204;
double r3750206 = im;
double r3750207 = r3750206 * r3750206;
double r3750208 = r3750194 * r3750194;
double r3750209 = r3750207 + r3750208;
double r3750210 = sqrt(r3750209);
double r3750211 = log(r3750210);
double r3750212 = r3750201 * r3750211;
double r3750213 = cbrt(r3750200);
double r3750214 = log(r3750213);
double r3750215 = r3750201 * r3750214;
double r3750216 = r3750215 + r3750215;
double r3750217 = r3750216 + r3750215;
double r3750218 = r3750212 / r3750217;
double r3750219 = -9.011225477962846e-70;
bool r3750220 = r3750194 <= r3750219;
double r3750221 = log(r3750206);
double r3750222 = r3750221 / r3750201;
double r3750223 = -1.4793624276825383e-232;
bool r3750224 = r3750194 <= r3750223;
double r3750225 = cbrt(r3750209);
double r3750226 = sqrt(r3750225);
double r3750227 = fabs(r3750225);
double r3750228 = r3750226 * r3750227;
double r3750229 = log(r3750228);
double r3750230 = r3750201 * r3750229;
double r3750231 = r3750201 * r3750201;
double r3750232 = r3750230 / r3750231;
double r3750233 = r3750224 ? r3750232 : r3750222;
double r3750234 = r3750220 ? r3750222 : r3750233;
double r3750235 = r3750205 ? r3750218 : r3750234;
double r3750236 = r3750196 ? r3750203 : r3750235;
return r3750236;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.3057006723590237e+36Initial program 42.8
Simplified42.8
Taylor expanded around -inf 11.7
Simplified11.7
Taylor expanded around -inf 62.8
Simplified11.6
rmApplied div-inv11.7
if -2.3057006723590237e+36 < re < -9.067057945334835e-44Initial program 15.5
Simplified15.5
rmApplied add-cube-cbrt15.5
Applied log-prod15.5
Applied distribute-lft-in15.5
Simplified15.5
Simplified15.5
if -9.067057945334835e-44 < re < -9.011225477962846e-70 or -1.4793624276825383e-232 < re Initial program 26.3
Simplified26.3
Taylor expanded around 0 35.7
if -9.011225477962846e-70 < re < -1.4793624276825383e-232Initial program 23.4
Simplified23.4
rmApplied add-cube-cbrt23.4
Applied sqrt-prod23.4
Simplified23.4
Final simplification19.3
herbie shell --seed 2019125
(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))))