\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.4760769569314187 \cdot 10^{+145}:\\
\;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0 + \log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\
\mathbf{elif}\;re \le 2.800497127464075 \cdot 10^{+120}:\\
\;\;\;\;\frac{\log base \cdot \log \left(\left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right) \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right)}{\left|\log base\right|} \cdot \frac{1}{\sqrt{\log base \cdot \log base}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r1873436 = re;
double r1873437 = r1873436 * r1873436;
double r1873438 = im;
double r1873439 = r1873438 * r1873438;
double r1873440 = r1873437 + r1873439;
double r1873441 = sqrt(r1873440);
double r1873442 = log(r1873441);
double r1873443 = base;
double r1873444 = log(r1873443);
double r1873445 = r1873442 * r1873444;
double r1873446 = atan2(r1873438, r1873436);
double r1873447 = 0.0;
double r1873448 = r1873446 * r1873447;
double r1873449 = r1873445 + r1873448;
double r1873450 = r1873444 * r1873444;
double r1873451 = r1873447 * r1873447;
double r1873452 = r1873450 + r1873451;
double r1873453 = r1873449 / r1873452;
return r1873453;
}
double f(double re, double im, double base) {
double r1873454 = re;
double r1873455 = -2.4760769569314187e+145;
bool r1873456 = r1873454 <= r1873455;
double r1873457 = im;
double r1873458 = atan2(r1873457, r1873454);
double r1873459 = 0.0;
double r1873460 = r1873458 * r1873459;
double r1873461 = base;
double r1873462 = log(r1873461);
double r1873463 = -r1873454;
double r1873464 = log(r1873463);
double r1873465 = r1873462 * r1873464;
double r1873466 = r1873460 + r1873465;
double r1873467 = r1873462 * r1873462;
double r1873468 = r1873466 / r1873467;
double r1873469 = 2.800497127464075e+120;
bool r1873470 = r1873454 <= r1873469;
double r1873471 = r1873457 * r1873457;
double r1873472 = r1873454 * r1873454;
double r1873473 = r1873471 + r1873472;
double r1873474 = sqrt(r1873473);
double r1873475 = cbrt(r1873474);
double r1873476 = r1873475 * r1873475;
double r1873477 = r1873476 * r1873475;
double r1873478 = log(r1873477);
double r1873479 = r1873462 * r1873478;
double r1873480 = fabs(r1873462);
double r1873481 = r1873479 / r1873480;
double r1873482 = 1.0;
double r1873483 = sqrt(r1873467);
double r1873484 = r1873482 / r1873483;
double r1873485 = r1873481 * r1873484;
double r1873486 = log(r1873454);
double r1873487 = -r1873486;
double r1873488 = -r1873462;
double r1873489 = r1873487 / r1873488;
double r1873490 = r1873470 ? r1873485 : r1873489;
double r1873491 = r1873456 ? r1873468 : r1873490;
return r1873491;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.4760769569314187e+145Initial program 59.3
Taylor expanded around -inf 6.6
Simplified6.6
if -2.4760769569314187e+145 < re < 2.800497127464075e+120Initial program 21.2
rmApplied add-sqr-sqrt21.2
Applied *-un-lft-identity21.2
Applied times-frac21.2
Simplified21.2
rmApplied add-cube-cbrt21.2
if 2.800497127464075e+120 < re Initial program 53.3
Taylor expanded around inf 7.8
Simplified7.8
Final simplification17.1
herbie shell --seed 2019165
(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))))