\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.151888904100587124379023402396569343398 \cdot 10^{58}:\\
\;\;\;\;\frac{\frac{\log \left(-1 \cdot re\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 9.450669110711002207218388065050424546591 \cdot 10^{-302}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\
\mathbf{elif}\;re \le 6.665470315389402134305579687920046870896 \cdot 10^{-268}:\\
\;\;\;\;\frac{\log im \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 5.168286053687553277469579473627394075561 \cdot 10^{91}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right) \cdot \log \left(\frac{1}{base}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\
\end{array}double f(double re, double im, double base) {
double r42883 = re;
double r42884 = r42883 * r42883;
double r42885 = im;
double r42886 = r42885 * r42885;
double r42887 = r42884 + r42886;
double r42888 = sqrt(r42887);
double r42889 = log(r42888);
double r42890 = base;
double r42891 = log(r42890);
double r42892 = r42889 * r42891;
double r42893 = atan2(r42885, r42883);
double r42894 = 0.0;
double r42895 = r42893 * r42894;
double r42896 = r42892 + r42895;
double r42897 = r42891 * r42891;
double r42898 = r42894 * r42894;
double r42899 = r42897 + r42898;
double r42900 = r42896 / r42899;
return r42900;
}
double f(double re, double im, double base) {
double r42901 = re;
double r42902 = -1.1518889041005871e+58;
bool r42903 = r42901 <= r42902;
double r42904 = -1.0;
double r42905 = r42904 * r42901;
double r42906 = log(r42905);
double r42907 = base;
double r42908 = log(r42907);
double r42909 = r42906 * r42908;
double r42910 = im;
double r42911 = atan2(r42910, r42901);
double r42912 = 0.0;
double r42913 = r42911 * r42912;
double r42914 = r42909 + r42913;
double r42915 = r42908 * r42908;
double r42916 = r42912 * r42912;
double r42917 = r42915 + r42916;
double r42918 = sqrt(r42917);
double r42919 = r42914 / r42918;
double r42920 = r42919 / r42918;
double r42921 = 9.450669110711002e-302;
bool r42922 = r42901 <= r42921;
double r42923 = r42901 * r42901;
double r42924 = r42910 * r42910;
double r42925 = r42923 + r42924;
double r42926 = sqrt(r42925);
double r42927 = log(r42926);
double r42928 = r42927 * r42908;
double r42929 = r42928 + r42913;
double r42930 = 3.0;
double r42931 = pow(r42912, r42930);
double r42932 = -r42931;
double r42933 = r42932 * r42912;
double r42934 = 4.0;
double r42935 = pow(r42908, r42934);
double r42936 = r42933 + r42935;
double r42937 = r42929 / r42936;
double r42938 = r42915 - r42916;
double r42939 = r42937 * r42938;
double r42940 = 6.665470315389402e-268;
bool r42941 = r42901 <= r42940;
double r42942 = log(r42910);
double r42943 = r42942 * r42908;
double r42944 = r42943 + r42913;
double r42945 = r42944 / r42917;
double r42946 = 5.168286053687553e+91;
bool r42947 = r42901 <= r42946;
double r42948 = 1.0;
double r42949 = r42948 / r42901;
double r42950 = log(r42949);
double r42951 = r42948 / r42907;
double r42952 = log(r42951);
double r42953 = r42950 * r42952;
double r42954 = r42953 + r42913;
double r42955 = r42954 / r42917;
double r42956 = r42947 ? r42939 : r42955;
double r42957 = r42941 ? r42945 : r42956;
double r42958 = r42922 ? r42939 : r42957;
double r42959 = r42903 ? r42920 : r42958;
return r42959;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.1518889041005871e+58Initial program 45.0
rmApplied add-sqr-sqrt45.0
Applied associate-/r*45.0
Taylor expanded around -inf 10.4
if -1.1518889041005871e+58 < re < 9.450669110711002e-302 or 6.665470315389402e-268 < re < 5.168286053687553e+91Initial program 22.3
rmApplied flip-+22.3
Applied associate-/r/22.3
Simplified22.3
if 9.450669110711002e-302 < re < 6.665470315389402e-268Initial program 30.3
Taylor expanded around 0 32.4
if 5.168286053687553e+91 < re Initial program 49.5
Taylor expanded around inf 9.4
Final simplification17.9
herbie shell --seed 2019353
(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))))