\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 -5.096763843336727330743281026044494216767 \cdot 10^{82}:\\
\;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le 4.348498385315214745374667788374072106078 \cdot 10^{86}:\\
\;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \left(\log \left(\sqrt[3]{base}\right) \cdot \left(\log \left(\sqrt[3]{im \cdot im + re \cdot re}\right) + \log \left(\sqrt[3]{im \cdot im + re \cdot re} \cdot \sqrt[3]{im \cdot im + re \cdot re}\right)\right) + \log \left(\sqrt[3]{base}\right) \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)}{0.0 \cdot 0.0 + \log base \cdot \log base}\\
\mathbf{else}:\\
\;\;\;\;-\frac{\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r1823576 = re;
double r1823577 = r1823576 * r1823576;
double r1823578 = im;
double r1823579 = r1823578 * r1823578;
double r1823580 = r1823577 + r1823579;
double r1823581 = sqrt(r1823580);
double r1823582 = log(r1823581);
double r1823583 = base;
double r1823584 = log(r1823583);
double r1823585 = r1823582 * r1823584;
double r1823586 = atan2(r1823578, r1823576);
double r1823587 = 0.0;
double r1823588 = r1823586 * r1823587;
double r1823589 = r1823585 + r1823588;
double r1823590 = r1823584 * r1823584;
double r1823591 = r1823587 * r1823587;
double r1823592 = r1823590 + r1823591;
double r1823593 = r1823589 / r1823592;
return r1823593;
}
double f(double re, double im, double base) {
double r1823594 = re;
double r1823595 = -5.096763843336727e+82;
bool r1823596 = r1823594 <= r1823595;
double r1823597 = -1.0;
double r1823598 = r1823597 / r1823594;
double r1823599 = log(r1823598);
double r1823600 = base;
double r1823601 = log(r1823600);
double r1823602 = r1823599 / r1823601;
double r1823603 = -r1823602;
double r1823604 = 4.348498385315215e+86;
bool r1823605 = r1823594 <= r1823604;
double r1823606 = im;
double r1823607 = atan2(r1823606, r1823594);
double r1823608 = 0.0;
double r1823609 = r1823607 * r1823608;
double r1823610 = cbrt(r1823600);
double r1823611 = log(r1823610);
double r1823612 = r1823606 * r1823606;
double r1823613 = r1823594 * r1823594;
double r1823614 = r1823612 + r1823613;
double r1823615 = cbrt(r1823614);
double r1823616 = log(r1823615);
double r1823617 = r1823615 * r1823615;
double r1823618 = log(r1823617);
double r1823619 = r1823616 + r1823618;
double r1823620 = r1823611 * r1823619;
double r1823621 = sqrt(r1823614);
double r1823622 = log(r1823621);
double r1823623 = r1823611 * r1823622;
double r1823624 = r1823620 + r1823623;
double r1823625 = r1823609 + r1823624;
double r1823626 = r1823608 * r1823608;
double r1823627 = r1823601 * r1823601;
double r1823628 = r1823626 + r1823627;
double r1823629 = r1823625 / r1823628;
double r1823630 = log(r1823594);
double r1823631 = -r1823601;
double r1823632 = r1823630 / r1823631;
double r1823633 = -r1823632;
double r1823634 = r1823605 ? r1823629 : r1823633;
double r1823635 = r1823596 ? r1823603 : r1823634;
return r1823635;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -5.096763843336727e+82Initial program 48.3
Taylor expanded around -inf 64.0
Simplified9.3
if -5.096763843336727e+82 < re < 4.348498385315215e+86Initial program 22.1
rmApplied add-cube-cbrt22.1
Applied log-prod22.2
Applied distribute-lft-in22.3
Simplified22.3
rmApplied add-cube-cbrt22.3
Applied log-prod22.3
if 4.348498385315215e+86 < re Initial program 50.7
Taylor expanded around inf 10.1
Simplified10.1
Final simplification17.7
herbie shell --seed 2019168
(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))))