\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{\frac{\left(-1 \cdot \log \left(\frac{-1}{re}\right)\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 4.69081280904729871 \cdot 10^{-246}:\\
\;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\
\mathbf{elif}\;re \le 4.4235180232042555 \cdot 10^{-227}:\\
\;\;\;\;\frac{\log re \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 6.589229227697289 \cdot 10^{74}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(1 \cdot {base}^{\frac{1}{3}}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\
\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 r42690 = re;
double r42691 = r42690 * r42690;
double r42692 = im;
double r42693 = r42692 * r42692;
double r42694 = r42691 + r42693;
double r42695 = sqrt(r42694);
double r42696 = log(r42695);
double r42697 = base;
double r42698 = log(r42697);
double r42699 = r42696 * r42698;
double r42700 = atan2(r42692, r42690);
double r42701 = 0.0;
double r42702 = r42700 * r42701;
double r42703 = r42699 + r42702;
double r42704 = r42698 * r42698;
double r42705 = r42701 * r42701;
double r42706 = r42704 + r42705;
double r42707 = r42703 / r42706;
return r42707;
}
double f(double re, double im, double base) {
double r42708 = re;
double r42709 = -3.6785538778066045e+41;
bool r42710 = r42708 <= r42709;
double r42711 = -1.0;
double r42712 = r42711 / r42708;
double r42713 = log(r42712);
double r42714 = r42711 * r42713;
double r42715 = base;
double r42716 = log(r42715);
double r42717 = r42714 * r42716;
double r42718 = im;
double r42719 = atan2(r42718, r42708);
double r42720 = 0.0;
double r42721 = r42719 * r42720;
double r42722 = r42717 + r42721;
double r42723 = r42716 * r42716;
double r42724 = r42720 * r42720;
double r42725 = r42723 + r42724;
double r42726 = sqrt(r42725);
double r42727 = r42722 / r42726;
double r42728 = r42727 / r42726;
double r42729 = 4.690812809047299e-246;
bool r42730 = r42708 <= r42729;
double r42731 = 1.0;
double r42732 = 2.0;
double r42733 = pow(r42716, r42732);
double r42734 = r42724 + r42733;
double r42735 = r42708 * r42708;
double r42736 = r42718 * r42718;
double r42737 = r42735 + r42736;
double r42738 = sqrt(r42737);
double r42739 = log(r42738);
double r42740 = r42739 * r42716;
double r42741 = r42740 + r42721;
double r42742 = r42734 / r42741;
double r42743 = r42731 / r42742;
double r42744 = 4.423518023204255e-227;
bool r42745 = r42708 <= r42744;
double r42746 = log(r42708);
double r42747 = r42746 * r42716;
double r42748 = r42747 + r42721;
double r42749 = r42748 / r42725;
double r42750 = 6.589229227697289e+74;
bool r42751 = r42708 <= r42750;
double r42752 = 0.3333333333333333;
double r42753 = pow(r42715, r42752);
double r42754 = r42731 * r42753;
double r42755 = log(r42754);
double r42756 = r42732 * r42755;
double r42757 = r42716 * r42756;
double r42758 = cbrt(r42715);
double r42759 = log(r42758);
double r42760 = r42716 * r42759;
double r42761 = r42757 + r42760;
double r42762 = r42761 + r42724;
double r42763 = r42741 / r42762;
double r42764 = r42732 * r42759;
double r42765 = r42716 * r42764;
double r42766 = r42765 + r42760;
double r42767 = r42766 + r42724;
double r42768 = r42748 / r42767;
double r42769 = r42751 ? r42763 : r42768;
double r42770 = r42745 ? r42749 : r42769;
double r42771 = r42730 ? r42743 : r42770;
double r42772 = r42710 ? r42728 : r42771;
return r42772;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -3.6785538778066045e+41Initial program 43.6
rmApplied add-sqr-sqrt43.6
Applied associate-/r*43.5
Taylor expanded around -inf 64.0
Simplified11.3
if -3.6785538778066045e+41 < re < 4.690812809047299e-246Initial program 23.8
rmApplied clear-num23.8
Simplified23.8
if 4.690812809047299e-246 < re < 4.423518023204255e-227Initial program 33.3
Taylor expanded around inf 51.4
if 4.423518023204255e-227 < re < 6.589229227697289e+74Initial program 20.4
rmApplied add-cube-cbrt20.4
Applied log-prod20.4
Applied distribute-lft-in20.4
Simplified20.4
rmApplied *-un-lft-identity20.4
Applied cbrt-prod20.4
Simplified20.4
Simplified20.4
if 6.589229227697289e+74 < re Initial program 47.7
rmApplied add-cube-cbrt47.7
Applied log-prod47.7
Applied distribute-lft-in47.7
Simplified47.7
Taylor expanded around inf 10.3
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))))