\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 -1.7816411661937366 \cdot 10^{+118}:\\
\;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le -3.60594831894126 \cdot 10^{-205}:\\
\;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \log base}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\
\mathbf{elif}\;re \le -6.019878598432241 \cdot 10^{-287}:\\
\;\;\;\;\frac{\log im \cdot \log base + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{0.0 \cdot 0.0 + \log base \cdot \log base}\\
\mathbf{elif}\;re \le 7.02389227678964 \cdot 10^{+119}:\\
\;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \log base}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r1807697 = re;
double r1807698 = r1807697 * r1807697;
double r1807699 = im;
double r1807700 = r1807699 * r1807699;
double r1807701 = r1807698 + r1807700;
double r1807702 = sqrt(r1807701);
double r1807703 = log(r1807702);
double r1807704 = base;
double r1807705 = log(r1807704);
double r1807706 = r1807703 * r1807705;
double r1807707 = atan2(r1807699, r1807697);
double r1807708 = 0.0;
double r1807709 = r1807707 * r1807708;
double r1807710 = r1807706 + r1807709;
double r1807711 = r1807705 * r1807705;
double r1807712 = r1807708 * r1807708;
double r1807713 = r1807711 + r1807712;
double r1807714 = r1807710 / r1807713;
return r1807714;
}
double f(double re, double im, double base) {
double r1807715 = re;
double r1807716 = -1.7816411661937366e+118;
bool r1807717 = r1807715 <= r1807716;
double r1807718 = -1.0;
double r1807719 = r1807718 / r1807715;
double r1807720 = log(r1807719);
double r1807721 = base;
double r1807722 = log(r1807721);
double r1807723 = r1807720 / r1807722;
double r1807724 = -r1807723;
double r1807725 = -3.60594831894126e-205;
bool r1807726 = r1807715 <= r1807725;
double r1807727 = 0.0;
double r1807728 = im;
double r1807729 = atan2(r1807728, r1807715);
double r1807730 = r1807727 * r1807729;
double r1807731 = r1807715 * r1807715;
double r1807732 = r1807728 * r1807728;
double r1807733 = r1807731 + r1807732;
double r1807734 = sqrt(r1807733);
double r1807735 = cbrt(r1807734);
double r1807736 = r1807735 * r1807735;
double r1807737 = r1807736 * r1807735;
double r1807738 = log(r1807737);
double r1807739 = r1807738 * r1807722;
double r1807740 = r1807730 + r1807739;
double r1807741 = r1807727 * r1807727;
double r1807742 = r1807722 * r1807722;
double r1807743 = r1807741 + r1807742;
double r1807744 = sqrt(r1807743);
double r1807745 = r1807740 / r1807744;
double r1807746 = 1.0;
double r1807747 = r1807746 / r1807744;
double r1807748 = r1807745 * r1807747;
double r1807749 = -6.019878598432241e-287;
bool r1807750 = r1807715 <= r1807749;
double r1807751 = log(r1807728);
double r1807752 = r1807751 * r1807722;
double r1807753 = r1807752 + r1807730;
double r1807754 = r1807753 / r1807743;
double r1807755 = 7.02389227678964e+119;
bool r1807756 = r1807715 <= r1807755;
double r1807757 = log(r1807715);
double r1807758 = -r1807757;
double r1807759 = -r1807722;
double r1807760 = r1807758 / r1807759;
double r1807761 = r1807756 ? r1807748 : r1807760;
double r1807762 = r1807750 ? r1807754 : r1807761;
double r1807763 = r1807726 ? r1807748 : r1807762;
double r1807764 = r1807717 ? r1807724 : r1807763;
return r1807764;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.7816411661937366e+118Initial program 54.6
Taylor expanded around -inf 64.0
Simplified8.0
if -1.7816411661937366e+118 < re < -3.60594831894126e-205 or -6.019878598432241e-287 < re < 7.02389227678964e+119Initial program 21.1
rmApplied add-sqr-sqrt21.1
Applied *-un-lft-identity21.1
Applied times-frac21.1
rmApplied add-cube-cbrt21.1
if -3.60594831894126e-205 < re < -6.019878598432241e-287Initial program 30.3
Taylor expanded around 0 33.4
if 7.02389227678964e+119 < re Initial program 54.9
Taylor expanded around inf 7.9
Simplified7.9
Final simplification17.8
herbie shell --seed 2019165
(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))))