\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.1066157852653055 \cdot 10^{151}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le -2.5119673460865214 \cdot 10^{-248}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\
\mathbf{elif}\;re \le 3.0649798362056419 \cdot 10^{-217}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 1.0477792868396227 \cdot 10^{135}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r54707 = re;
double r54708 = r54707 * r54707;
double r54709 = im;
double r54710 = r54709 * r54709;
double r54711 = r54708 + r54710;
double r54712 = sqrt(r54711);
double r54713 = log(r54712);
double r54714 = base;
double r54715 = log(r54714);
double r54716 = r54713 * r54715;
double r54717 = atan2(r54709, r54707);
double r54718 = 0.0;
double r54719 = r54717 * r54718;
double r54720 = r54716 + r54719;
double r54721 = r54715 * r54715;
double r54722 = r54718 * r54718;
double r54723 = r54721 + r54722;
double r54724 = r54720 / r54723;
return r54724;
}
double f(double re, double im, double base) {
double r54725 = re;
double r54726 = -2.1066157852653055e+151;
bool r54727 = r54725 <= r54726;
double r54728 = -1.0;
double r54729 = r54728 / r54725;
double r54730 = log(r54729);
double r54731 = -r54730;
double r54732 = base;
double r54733 = log(r54732);
double r54734 = r54731 / r54733;
double r54735 = -2.5119673460865214e-248;
bool r54736 = r54725 <= r54735;
double r54737 = r54725 * r54725;
double r54738 = im;
double r54739 = r54738 * r54738;
double r54740 = r54737 + r54739;
double r54741 = sqrt(r54740);
double r54742 = log(r54741);
double r54743 = r54742 * r54733;
double r54744 = atan2(r54738, r54725);
double r54745 = 0.0;
double r54746 = r54744 * r54745;
double r54747 = r54743 + r54746;
double r54748 = r54745 * r54745;
double r54749 = 2.0;
double r54750 = pow(r54733, r54749);
double r54751 = r54748 + r54750;
double r54752 = sqrt(r54751);
double r54753 = r54747 / r54752;
double r54754 = 1.0;
double r54755 = r54754 / r54752;
double r54756 = r54753 * r54755;
double r54757 = 3.064979836205642e-217;
bool r54758 = r54725 <= r54757;
double r54759 = log(r54738);
double r54760 = r54759 / r54733;
double r54761 = 1.0477792868396227e+135;
bool r54762 = r54725 <= r54761;
double r54763 = log(r54725);
double r54764 = -r54763;
double r54765 = -r54733;
double r54766 = r54764 / r54765;
double r54767 = r54762 ? r54756 : r54766;
double r54768 = r54758 ? r54760 : r54767;
double r54769 = r54736 ? r54756 : r54768;
double r54770 = r54727 ? r54734 : r54769;
return r54770;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.1066157852653055e+151Initial program 62.9
Taylor expanded around -inf 64.0
Simplified6.7
if -2.1066157852653055e+151 < re < -2.5119673460865214e-248 or 3.064979836205642e-217 < re < 1.0477792868396227e+135Initial program 19.8
rmApplied add-sqr-sqrt19.8
Applied associate-/r*19.7
Simplified19.7
rmApplied div-inv19.8
Simplified19.8
if -2.5119673460865214e-248 < re < 3.064979836205642e-217Initial program 30.4
Taylor expanded around 0 31.8
if 1.0477792868396227e+135 < re Initial program 58.9
Taylor expanded around inf 7.9
Simplified7.9
Final simplification17.9
herbie shell --seed 2019198
(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))))