\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 -3.678553877806604 \cdot 10^{41}:\\
\;\;\;\;\frac{\log \left(-re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 4.69081280904729871 \cdot 10^{-246} \lor \neg \left(re \le 4.4235180232042555 \cdot 10^{-227} \lor \neg \left(re \le 6.589229227697289 \cdot 10^{74}\right)\right):\\
\;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}} \cdot \frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log re \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\
\end{array}double f(double re, double im, double base) {
double r52662 = re;
double r52663 = r52662 * r52662;
double r52664 = im;
double r52665 = r52664 * r52664;
double r52666 = r52663 + r52665;
double r52667 = sqrt(r52666);
double r52668 = log(r52667);
double r52669 = base;
double r52670 = log(r52669);
double r52671 = r52668 * r52670;
double r52672 = atan2(r52664, r52662);
double r52673 = 0.0;
double r52674 = r52672 * r52673;
double r52675 = r52671 + r52674;
double r52676 = r52670 * r52670;
double r52677 = r52673 * r52673;
double r52678 = r52676 + r52677;
double r52679 = r52675 / r52678;
return r52679;
}
double f(double re, double im, double base) {
double r52680 = re;
double r52681 = -3.6785538778066045e+41;
bool r52682 = r52680 <= r52681;
double r52683 = -r52680;
double r52684 = log(r52683);
double r52685 = base;
double r52686 = log(r52685);
double r52687 = r52684 * r52686;
double r52688 = im;
double r52689 = atan2(r52688, r52680);
double r52690 = 0.0;
double r52691 = r52689 * r52690;
double r52692 = r52687 + r52691;
double r52693 = 2.0;
double r52694 = cbrt(r52685);
double r52695 = log(r52694);
double r52696 = r52693 * r52695;
double r52697 = r52686 * r52696;
double r52698 = r52686 * r52695;
double r52699 = r52697 + r52698;
double r52700 = r52690 * r52690;
double r52701 = r52699 + r52700;
double r52702 = r52692 / r52701;
double r52703 = 4.690812809047299e-246;
bool r52704 = r52680 <= r52703;
double r52705 = 4.423518023204255e-227;
bool r52706 = r52680 <= r52705;
double r52707 = 6.589229227697289e+74;
bool r52708 = r52680 <= r52707;
double r52709 = !r52708;
bool r52710 = r52706 || r52709;
double r52711 = !r52710;
bool r52712 = r52704 || r52711;
double r52713 = 1.0;
double r52714 = pow(r52686, r52693);
double r52715 = r52700 + r52714;
double r52716 = sqrt(r52715);
double r52717 = r52713 / r52716;
double r52718 = r52680 * r52680;
double r52719 = r52688 * r52688;
double r52720 = r52718 + r52719;
double r52721 = sqrt(r52720);
double r52722 = log(r52721);
double r52723 = r52686 * r52722;
double r52724 = r52691 + r52723;
double r52725 = r52724 / r52716;
double r52726 = r52717 * r52725;
double r52727 = log(r52680);
double r52728 = r52727 * r52686;
double r52729 = r52728 + r52691;
double r52730 = r52729 / r52701;
double r52731 = r52712 ? r52726 : r52730;
double r52732 = r52682 ? r52702 : r52731;
return r52732;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -3.6785538778066045e+41Initial program 43.6
rmApplied add-cube-cbrt43.6
Applied log-prod43.6
Applied distribute-lft-in43.6
Simplified43.6
Taylor expanded around -inf 11.4
Simplified11.4
if -3.6785538778066045e+41 < re < 4.690812809047299e-246 or 4.423518023204255e-227 < re < 6.589229227697289e+74Initial program 22.3
rmApplied add-sqr-sqrt22.3
Applied *-un-lft-identity22.3
Applied times-frac22.3
Simplified22.3
Simplified22.3
if 4.690812809047299e-246 < re < 4.423518023204255e-227 or 6.589229227697289e+74 < re Initial program 46.5
rmApplied add-cube-cbrt46.6
Applied log-prod46.6
Applied distribute-lft-in46.6
Simplified46.6
Taylor expanded around inf 13.5
Final simplification18.1
herbie shell --seed 2020046
(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))))