\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\begin{array}{l}
\mathbf{if}\;re \le -2.3803616640784937 \cdot 10^{+101}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}}\\
\end{array}double f(double re, double im, double base) {
double r1737848 = re;
double r1737849 = r1737848 * r1737848;
double r1737850 = im;
double r1737851 = r1737850 * r1737850;
double r1737852 = r1737849 + r1737851;
double r1737853 = sqrt(r1737852);
double r1737854 = log(r1737853);
double r1737855 = base;
double r1737856 = log(r1737855);
double r1737857 = r1737854 * r1737856;
double r1737858 = atan2(r1737850, r1737848);
double r1737859 = 0.0;
double r1737860 = r1737858 * r1737859;
double r1737861 = r1737857 + r1737860;
double r1737862 = r1737856 * r1737856;
double r1737863 = r1737859 * r1737859;
double r1737864 = r1737862 + r1737863;
double r1737865 = r1737861 / r1737864;
return r1737865;
}
double f(double re, double im, double base) {
double r1737866 = re;
double r1737867 = -2.3803616640784937e+101;
bool r1737868 = r1737866 <= r1737867;
double r1737869 = -r1737866;
double r1737870 = log(r1737869);
double r1737871 = base;
double r1737872 = log(r1737871);
double r1737873 = r1737870 / r1737872;
double r1737874 = 1.0;
double r1737875 = im;
double r1737876 = r1737875 * r1737875;
double r1737877 = r1737866 * r1737866;
double r1737878 = r1737876 + r1737877;
double r1737879 = sqrt(r1737878);
double r1737880 = log(r1737879);
double r1737881 = r1737872 / r1737880;
double r1737882 = r1737874 / r1737881;
double r1737883 = r1737868 ? r1737873 : r1737882;
return r1737883;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.3803616640784937e+101Initial program 49.8
Simplified49.8
Taylor expanded around -inf 8.9
Simplified8.9
rmApplied associate-/r*8.8
Simplified8.8
if -2.3803616640784937e+101 < re Initial program 21.8
Simplified21.8
rmApplied clear-num21.8
Simplified21.7
Final simplification17.3
herbie shell --seed 2019129
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0))))