\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.477980765554152890668180029680723006559 \cdot 10^{121}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\
\mathbf{elif}\;re \le 5.925540416458275309943000169806911367311 \cdot 10^{52}:\\
\;\;\;\;\frac{1}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}} \cdot \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\sqrt[3]{{\left(\log base\right)}^{6}} + 0.0 \cdot 0.0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\
\end{array}double f(double re, double im, double base) {
double r42789 = re;
double r42790 = r42789 * r42789;
double r42791 = im;
double r42792 = r42791 * r42791;
double r42793 = r42790 + r42792;
double r42794 = sqrt(r42793);
double r42795 = log(r42794);
double r42796 = base;
double r42797 = log(r42796);
double r42798 = r42795 * r42797;
double r42799 = atan2(r42791, r42789);
double r42800 = 0.0;
double r42801 = r42799 * r42800;
double r42802 = r42798 + r42801;
double r42803 = r42797 * r42797;
double r42804 = r42800 * r42800;
double r42805 = r42803 + r42804;
double r42806 = r42802 / r42805;
return r42806;
}
double f(double re, double im, double base) {
double r42807 = re;
double r42808 = -1.477980765554153e+121;
bool r42809 = r42807 <= r42808;
double r42810 = -1.0;
double r42811 = r42810 / r42807;
double r42812 = log(r42811);
double r42813 = -r42812;
double r42814 = base;
double r42815 = log(r42814);
double r42816 = r42813 / r42815;
double r42817 = 5.925540416458275e+52;
bool r42818 = r42807 <= r42817;
double r42819 = 1.0;
double r42820 = 2.0;
double r42821 = pow(r42815, r42820);
double r42822 = 0.0;
double r42823 = r42822 * r42822;
double r42824 = r42821 + r42823;
double r42825 = sqrt(r42824);
double r42826 = r42819 / r42825;
double r42827 = r42807 * r42807;
double r42828 = im;
double r42829 = r42828 * r42828;
double r42830 = r42827 + r42829;
double r42831 = sqrt(r42830);
double r42832 = log(r42831);
double r42833 = r42832 * r42815;
double r42834 = atan2(r42828, r42807);
double r42835 = r42834 * r42822;
double r42836 = r42833 + r42835;
double r42837 = 6.0;
double r42838 = pow(r42815, r42837);
double r42839 = cbrt(r42838);
double r42840 = r42839 + r42823;
double r42841 = sqrt(r42840);
double r42842 = r42836 / r42841;
double r42843 = r42826 * r42842;
double r42844 = log(r42807);
double r42845 = -r42844;
double r42846 = -r42815;
double r42847 = r42845 / r42846;
double r42848 = r42818 ? r42843 : r42847;
double r42849 = r42809 ? r42816 : r42848;
return r42849;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -1.477980765554153e+121Initial program 55.4
rmApplied add-sqr-sqrt55.4
Applied *-un-lft-identity55.4
Applied times-frac55.4
Simplified55.4
Simplified55.4
Taylor expanded around -inf 64.0
Simplified7.9
if -1.477980765554153e+121 < re < 5.925540416458275e+52Initial program 21.9
rmApplied add-sqr-sqrt21.9
Applied *-un-lft-identity21.9
Applied times-frac21.9
Simplified21.9
Simplified21.9
rmApplied add-cbrt-cube22.0
Simplified21.9
if 5.925540416458275e+52 < re Initial program 45.0
Taylor expanded around inf 11.3
Simplified11.3
Final simplification17.7
herbie shell --seed 2019325
(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))))