\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.276364532810895682126701738942978934868 \cdot 10^{99}:\\
\;\;\;\;\frac{\log base \cdot \log \left(-re\right) + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{\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 -8.321374673661262893479589263154025294127 \cdot 10^{-172}:\\
\;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log \left(\sqrt{im \cdot im + re \cdot re}\right) \cdot \log base}{\left(\left(\log \left(\sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\
\mathbf{elif}\;re \le -9.727151345646148762551396689308006140934 \cdot 10^{-225}:\\
\;\;\;\;\frac{\log im}{\log base}\\
\mathbf{elif}\;re \le 2.354844938989890697506129101764848076997 \cdot 10^{121}:\\
\;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log \left(\sqrt{im \cdot im + re \cdot re}\right) \cdot \log base}{\left(\left(\log \left(\sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r2144833 = re;
double r2144834 = r2144833 * r2144833;
double r2144835 = im;
double r2144836 = r2144835 * r2144835;
double r2144837 = r2144834 + r2144836;
double r2144838 = sqrt(r2144837);
double r2144839 = log(r2144838);
double r2144840 = base;
double r2144841 = log(r2144840);
double r2144842 = r2144839 * r2144841;
double r2144843 = atan2(r2144835, r2144833);
double r2144844 = 0.0;
double r2144845 = r2144843 * r2144844;
double r2144846 = r2144842 + r2144845;
double r2144847 = r2144841 * r2144841;
double r2144848 = r2144844 * r2144844;
double r2144849 = r2144847 + r2144848;
double r2144850 = r2144846 / r2144849;
return r2144850;
}
double f(double re, double im, double base) {
double r2144851 = re;
double r2144852 = -2.2763645328108957e+99;
bool r2144853 = r2144851 <= r2144852;
double r2144854 = base;
double r2144855 = log(r2144854);
double r2144856 = -r2144851;
double r2144857 = log(r2144856);
double r2144858 = r2144855 * r2144857;
double r2144859 = 0.0;
double r2144860 = im;
double r2144861 = atan2(r2144860, r2144851);
double r2144862 = r2144859 * r2144861;
double r2144863 = r2144858 + r2144862;
double r2144864 = r2144859 * r2144859;
double r2144865 = r2144855 * r2144855;
double r2144866 = r2144864 + r2144865;
double r2144867 = sqrt(r2144866);
double r2144868 = r2144863 / r2144867;
double r2144869 = 1.0;
double r2144870 = r2144869 / r2144867;
double r2144871 = r2144868 * r2144870;
double r2144872 = -8.321374673661263e-172;
bool r2144873 = r2144851 <= r2144872;
double r2144874 = r2144860 * r2144860;
double r2144875 = r2144851 * r2144851;
double r2144876 = r2144874 + r2144875;
double r2144877 = sqrt(r2144876);
double r2144878 = log(r2144877);
double r2144879 = r2144878 * r2144855;
double r2144880 = r2144862 + r2144879;
double r2144881 = cbrt(r2144854);
double r2144882 = log(r2144881);
double r2144883 = r2144882 * r2144855;
double r2144884 = r2144883 + r2144883;
double r2144885 = r2144884 + r2144883;
double r2144886 = r2144885 + r2144864;
double r2144887 = r2144880 / r2144886;
double r2144888 = -9.727151345646149e-225;
bool r2144889 = r2144851 <= r2144888;
double r2144890 = log(r2144860);
double r2144891 = r2144890 / r2144855;
double r2144892 = 2.3548449389898907e+121;
bool r2144893 = r2144851 <= r2144892;
double r2144894 = log(r2144851);
double r2144895 = -r2144894;
double r2144896 = -r2144855;
double r2144897 = r2144895 / r2144896;
double r2144898 = r2144893 ? r2144887 : r2144897;
double r2144899 = r2144889 ? r2144891 : r2144898;
double r2144900 = r2144873 ? r2144887 : r2144899;
double r2144901 = r2144853 ? r2144871 : r2144900;
return r2144901;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.2763645328108957e+99Initial program 51.8
rmApplied add-sqr-sqrt51.8
Applied *-un-lft-identity51.8
Applied times-frac51.8
Taylor expanded around -inf 10.8
Simplified10.8
if -2.2763645328108957e+99 < re < -8.321374673661263e-172 or -9.727151345646149e-225 < re < 2.3548449389898907e+121Initial program 21.2
rmApplied add-cube-cbrt21.3
Applied log-prod21.3
Applied distribute-rgt-in21.3
Simplified21.3
if -8.321374673661263e-172 < re < -9.727151345646149e-225Initial program 29.7
Taylor expanded around 0 37.5
if 2.3548449389898907e+121 < re Initial program 55.6
Taylor expanded around inf 8.8
Simplified8.7
Final simplification18.3
herbie shell --seed 2019174
(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))))