\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 -6.815752887057826 \cdot 10^{124}:\\
\;\;\;\;\frac{\frac{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\
\mathbf{elif}\;re \le 9.9753422698576661 \cdot 10^{110}:\\
\;\;\;\;\left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\
\end{array}double f(double re, double im, double base) {
double r45754 = re;
double r45755 = r45754 * r45754;
double r45756 = im;
double r45757 = r45756 * r45756;
double r45758 = r45755 + r45757;
double r45759 = sqrt(r45758);
double r45760 = log(r45759);
double r45761 = base;
double r45762 = log(r45761);
double r45763 = r45760 * r45762;
double r45764 = atan2(r45756, r45754);
double r45765 = 0.0;
double r45766 = r45764 * r45765;
double r45767 = r45763 + r45766;
double r45768 = r45762 * r45762;
double r45769 = r45765 * r45765;
double r45770 = r45768 + r45769;
double r45771 = r45767 / r45770;
return r45771;
}
double f(double re, double im, double base) {
double r45772 = re;
double r45773 = -6.815752887057826e+124;
bool r45774 = r45772 <= r45773;
double r45775 = -1.0;
double r45776 = r45775 * r45772;
double r45777 = log(r45776);
double r45778 = base;
double r45779 = log(r45778);
double r45780 = r45777 * r45779;
double r45781 = im;
double r45782 = atan2(r45781, r45772);
double r45783 = 0.0;
double r45784 = r45782 * r45783;
double r45785 = r45780 + r45784;
double r45786 = r45779 * r45779;
double r45787 = r45783 * r45783;
double r45788 = r45786 + r45787;
double r45789 = sqrt(r45788);
double r45790 = r45785 / r45789;
double r45791 = r45790 / r45789;
double r45792 = 9.975342269857666e+110;
bool r45793 = r45772 <= r45792;
double r45794 = r45772 * r45772;
double r45795 = r45781 * r45781;
double r45796 = r45794 + r45795;
double r45797 = sqrt(r45796);
double r45798 = log(r45797);
double r45799 = r45798 * r45779;
double r45800 = r45799 + r45784;
double r45801 = 1.0;
double r45802 = r45801 / r45788;
double r45803 = r45800 * r45802;
double r45804 = r45801 / r45772;
double r45805 = log(r45804);
double r45806 = r45801 / r45778;
double r45807 = log(r45806);
double r45808 = r45805 / r45807;
double r45809 = r45793 ? r45803 : r45808;
double r45810 = r45774 ? r45791 : r45809;
return r45810;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -6.815752887057826e+124Initial program 56.4
rmApplied add-sqr-sqrt56.4
Applied associate-/r*56.4
Taylor expanded around -inf 8.2
if -6.815752887057826e+124 < re < 9.975342269857666e+110Initial program 22.2
rmApplied add-sqr-sqrt22.2
Applied associate-/r*22.2
rmApplied *-un-lft-identity22.2
Applied sqrt-prod22.2
Applied div-inv22.2
Applied times-frac22.3
Simplified22.3
Simplified22.3
if 9.975342269857666e+110 < re Initial program 53.3
Taylor expanded around inf 8.6
Final simplification18.1
herbie shell --seed 2020089
(FPCore (re im base)
:name "math.log/2 on complex, real part"
:precision binary64
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))