\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}\;im \le -3.181961503270047933638306263352911428766 \cdot 10^{94}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{im}\right)}{\log base}\\
\mathbf{elif}\;im \le 2.041972308450815691735066150411629060859 \cdot 10^{122}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log im \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\end{array}double f(double re, double im, double base) {
double r40689 = re;
double r40690 = r40689 * r40689;
double r40691 = im;
double r40692 = r40691 * r40691;
double r40693 = r40690 + r40692;
double r40694 = sqrt(r40693);
double r40695 = log(r40694);
double r40696 = base;
double r40697 = log(r40696);
double r40698 = r40695 * r40697;
double r40699 = atan2(r40691, r40689);
double r40700 = 0.0;
double r40701 = r40699 * r40700;
double r40702 = r40698 + r40701;
double r40703 = r40697 * r40697;
double r40704 = r40700 * r40700;
double r40705 = r40703 + r40704;
double r40706 = r40702 / r40705;
return r40706;
}
double f(double re, double im, double base) {
double r40707 = im;
double r40708 = -3.181961503270048e+94;
bool r40709 = r40707 <= r40708;
double r40710 = -1.0;
double r40711 = r40710 / r40707;
double r40712 = log(r40711);
double r40713 = -r40712;
double r40714 = base;
double r40715 = log(r40714);
double r40716 = r40713 / r40715;
double r40717 = 2.0419723084508157e+122;
bool r40718 = r40707 <= r40717;
double r40719 = re;
double r40720 = r40719 * r40719;
double r40721 = r40707 * r40707;
double r40722 = r40720 + r40721;
double r40723 = sqrt(r40722);
double r40724 = log(r40723);
double r40725 = r40724 * r40715;
double r40726 = atan2(r40707, r40719);
double r40727 = 0.0;
double r40728 = r40726 * r40727;
double r40729 = r40725 + r40728;
double r40730 = 2.0;
double r40731 = pow(r40715, r40730);
double r40732 = r40727 * r40727;
double r40733 = r40731 + r40732;
double r40734 = sqrt(r40733);
double r40735 = r40729 / r40734;
double r40736 = 1.0;
double r40737 = r40732 + r40731;
double r40738 = sqrt(r40737);
double r40739 = r40736 / r40738;
double r40740 = r40735 * r40739;
double r40741 = log(r40707);
double r40742 = r40741 * r40715;
double r40743 = r40742 + r40728;
double r40744 = r40715 * r40715;
double r40745 = r40744 + r40732;
double r40746 = r40743 / r40745;
double r40747 = r40718 ? r40740 : r40746;
double r40748 = r40709 ? r40716 : r40747;
return r40748;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if im < -3.181961503270048e+94Initial program 50.5
rmApplied add-sqr-sqrt50.5
Applied associate-/r*50.5
Simplified50.5
rmApplied *-un-lft-identity50.5
Applied sqrt-prod50.5
Applied div-inv50.5
Applied times-frac50.6
Simplified50.6
Simplified50.5
Taylor expanded around -inf 64.0
Simplified8.9
if -3.181961503270048e+94 < im < 2.0419723084508157e+122Initial program 21.7
rmApplied add-sqr-sqrt21.7
Applied associate-/r*21.7
Simplified21.7
rmApplied div-inv21.7
Simplified21.7
if 2.0419723084508157e+122 < im Initial program 56.6
Taylor expanded around 0 8.2
Final simplification17.6
herbie shell --seed 2019306
(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))))