\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 -4.621917751541981977598334530028228218202 \cdot 10^{85}:\\
\;\;\;\;\frac{\left(-1 \cdot \log \left(\frac{-1}{re}\right)\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({\left(\frac{1}{base}\right)}^{\frac{-1}{3}}\right)\right) + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le -1.812646524830859456509520767717219521043 \cdot 10^{-110}:\\
\;\;\;\;\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(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le 6.262720552833293504914230556530364862813 \cdot 10^{-252}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 5.939275393622702106086644744957742041239 \cdot 10^{55}:\\
\;\;\;\;\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(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\
\end{array}double f(double re, double im, double base) {
double r42677 = re;
double r42678 = r42677 * r42677;
double r42679 = im;
double r42680 = r42679 * r42679;
double r42681 = r42678 + r42680;
double r42682 = sqrt(r42681);
double r42683 = log(r42682);
double r42684 = base;
double r42685 = log(r42684);
double r42686 = r42683 * r42685;
double r42687 = atan2(r42679, r42677);
double r42688 = 0.0;
double r42689 = r42687 * r42688;
double r42690 = r42686 + r42689;
double r42691 = r42685 * r42685;
double r42692 = r42688 * r42688;
double r42693 = r42691 + r42692;
double r42694 = r42690 / r42693;
return r42694;
}
double f(double re, double im, double base) {
double r42695 = re;
double r42696 = -4.621917751541982e+85;
bool r42697 = r42695 <= r42696;
double r42698 = -1.0;
double r42699 = r42698 / r42695;
double r42700 = log(r42699);
double r42701 = r42698 * r42700;
double r42702 = base;
double r42703 = log(r42702);
double r42704 = r42701 * r42703;
double r42705 = im;
double r42706 = atan2(r42705, r42695);
double r42707 = 0.0;
double r42708 = r42706 * r42707;
double r42709 = r42704 + r42708;
double r42710 = 2.0;
double r42711 = cbrt(r42702);
double r42712 = log(r42711);
double r42713 = r42710 * r42712;
double r42714 = r42703 * r42713;
double r42715 = 1.0;
double r42716 = r42715 / r42702;
double r42717 = -0.3333333333333333;
double r42718 = pow(r42716, r42717);
double r42719 = log(r42718);
double r42720 = r42703 * r42719;
double r42721 = r42714 + r42720;
double r42722 = r42707 * r42707;
double r42723 = r42721 + r42722;
double r42724 = r42709 / r42723;
double r42725 = -1.8126465248308595e-110;
bool r42726 = r42695 <= r42725;
double r42727 = r42695 * r42695;
double r42728 = r42705 * r42705;
double r42729 = r42727 + r42728;
double r42730 = sqrt(r42729);
double r42731 = log(r42730);
double r42732 = r42731 * r42703;
double r42733 = r42732 + r42708;
double r42734 = r42703 * r42712;
double r42735 = r42714 + r42734;
double r42736 = r42735 + r42722;
double r42737 = r42733 / r42736;
double r42738 = 6.2627205528332935e-252;
bool r42739 = r42695 <= r42738;
double r42740 = log(r42705);
double r42741 = r42740 / r42703;
double r42742 = 5.939275393622702e+55;
bool r42743 = r42695 <= r42742;
double r42744 = r42715 / r42695;
double r42745 = log(r42744);
double r42746 = log(r42716);
double r42747 = r42745 / r42746;
double r42748 = r42743 ? r42737 : r42747;
double r42749 = r42739 ? r42741 : r42748;
double r42750 = r42726 ? r42737 : r42749;
double r42751 = r42697 ? r42724 : r42750;
return r42751;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -4.621917751541982e+85Initial program 49.1
rmApplied add-cube-cbrt49.1
Applied log-prod49.1
Applied distribute-lft-in49.1
Simplified49.1
Taylor expanded around inf 49.1
Taylor expanded around -inf 64.0
Simplified9.2
if -4.621917751541982e+85 < re < -1.8126465248308595e-110 or 6.2627205528332935e-252 < re < 5.939275393622702e+55Initial program 19.4
rmApplied add-cube-cbrt19.4
Applied log-prod19.4
Applied distribute-lft-in19.4
Simplified19.4
if -1.8126465248308595e-110 < re < 6.2627205528332935e-252Initial program 28.4
Taylor expanded around 0 36.8
if 5.939275393622702e+55 < re Initial program 46.3
Taylor expanded around inf 10.9
Final simplification19.4
herbie shell --seed 2019354
(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))))