\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 -2.195715110017202986247961863876192276869 \cdot 10^{114}:\\
\;\;\;\;\frac{-1 \cdot \log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le 9.686064739606018912272388835301665400309 \cdot 10^{-199}:\\
\;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + \log base \cdot \log base}{\log base \cdot \log \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right)\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\
\mathbf{elif}\;re \le 8.183197557056351476111988028189136561404 \cdot 10^{-186}:\\
\;\;\;\;-\frac{\log re}{-\log base}\\
\mathbf{elif}\;re \le 3.605929673185673029148798139573470480982 \cdot 10^{96}:\\
\;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + \log base \cdot \log base}{\log base \cdot \log \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right)\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;-\frac{\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r1606603 = re;
double r1606604 = r1606603 * r1606603;
double r1606605 = im;
double r1606606 = r1606605 * r1606605;
double r1606607 = r1606604 + r1606606;
double r1606608 = sqrt(r1606607);
double r1606609 = log(r1606608);
double r1606610 = base;
double r1606611 = log(r1606610);
double r1606612 = r1606609 * r1606611;
double r1606613 = atan2(r1606605, r1606603);
double r1606614 = 0.0;
double r1606615 = r1606613 * r1606614;
double r1606616 = r1606612 + r1606615;
double r1606617 = r1606611 * r1606611;
double r1606618 = r1606614 * r1606614;
double r1606619 = r1606617 + r1606618;
double r1606620 = r1606616 / r1606619;
return r1606620;
}
double f(double re, double im, double base) {
double r1606621 = re;
double r1606622 = -2.195715110017203e+114;
bool r1606623 = r1606621 <= r1606622;
double r1606624 = -1.0;
double r1606625 = r1606624 / r1606621;
double r1606626 = log(r1606625);
double r1606627 = r1606624 * r1606626;
double r1606628 = base;
double r1606629 = log(r1606628);
double r1606630 = r1606627 / r1606629;
double r1606631 = 9.686064739606019e-199;
bool r1606632 = r1606621 <= r1606631;
double r1606633 = 1.0;
double r1606634 = 0.0;
double r1606635 = r1606634 * r1606634;
double r1606636 = r1606629 * r1606629;
double r1606637 = r1606635 + r1606636;
double r1606638 = im;
double r1606639 = r1606638 * r1606638;
double r1606640 = r1606621 * r1606621;
double r1606641 = r1606639 + r1606640;
double r1606642 = sqrt(r1606641);
double r1606643 = cbrt(r1606642);
double r1606644 = r1606643 * r1606643;
double r1606645 = r1606643 * r1606644;
double r1606646 = log(r1606645);
double r1606647 = r1606629 * r1606646;
double r1606648 = atan2(r1606638, r1606621);
double r1606649 = r1606648 * r1606634;
double r1606650 = r1606647 + r1606649;
double r1606651 = r1606637 / r1606650;
double r1606652 = r1606633 / r1606651;
double r1606653 = 8.183197557056351e-186;
bool r1606654 = r1606621 <= r1606653;
double r1606655 = log(r1606621);
double r1606656 = -r1606629;
double r1606657 = r1606655 / r1606656;
double r1606658 = -r1606657;
double r1606659 = 3.605929673185673e+96;
bool r1606660 = r1606621 <= r1606659;
double r1606661 = r1606660 ? r1606652 : r1606658;
double r1606662 = r1606654 ? r1606658 : r1606661;
double r1606663 = r1606632 ? r1606652 : r1606662;
double r1606664 = r1606623 ? r1606630 : r1606663;
return r1606664;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.195715110017203e+114Initial program 55.0
Taylor expanded around -inf 64.0
Simplified9.4
if -2.195715110017203e+114 < re < 9.686064739606019e-199 or 8.183197557056351e-186 < re < 3.605929673185673e+96Initial program 21.9
rmApplied clear-num22.0
rmApplied add-cube-cbrt22.0
if 9.686064739606019e-199 < re < 8.183197557056351e-186 or 3.605929673185673e+96 < re Initial program 49.3
Taylor expanded around inf 11.3
Simplified11.3
Final simplification18.0
herbie shell --seed 2019192
(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))))