\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.1519584443960466 \cdot 10^{+98}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\
\mathbf{else}:\\
\;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right) \cdot \frac{1}{\log base}\\
\end{array}double f(double re, double im, double base) {
double r2242780 = re;
double r2242781 = r2242780 * r2242780;
double r2242782 = im;
double r2242783 = r2242782 * r2242782;
double r2242784 = r2242781 + r2242783;
double r2242785 = sqrt(r2242784);
double r2242786 = log(r2242785);
double r2242787 = base;
double r2242788 = log(r2242787);
double r2242789 = r2242786 * r2242788;
double r2242790 = atan2(r2242782, r2242780);
double r2242791 = 0.0;
double r2242792 = r2242790 * r2242791;
double r2242793 = r2242789 + r2242792;
double r2242794 = r2242788 * r2242788;
double r2242795 = r2242791 * r2242791;
double r2242796 = r2242794 + r2242795;
double r2242797 = r2242793 / r2242796;
return r2242797;
}
double f(double re, double im, double base) {
double r2242798 = re;
double r2242799 = -2.1519584443960466e+98;
bool r2242800 = r2242798 <= r2242799;
double r2242801 = -r2242798;
double r2242802 = log(r2242801);
double r2242803 = base;
double r2242804 = log(r2242803);
double r2242805 = r2242802 / r2242804;
double r2242806 = im;
double r2242807 = r2242806 * r2242806;
double r2242808 = r2242798 * r2242798;
double r2242809 = r2242807 + r2242808;
double r2242810 = sqrt(r2242809);
double r2242811 = log(r2242810);
double r2242812 = 1.0;
double r2242813 = r2242812 / r2242804;
double r2242814 = r2242811 * r2242813;
double r2242815 = r2242800 ? r2242805 : r2242814;
return r2242815;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
if re < -2.1519584443960466e+98Initial program 49.2
Simplified49.2
rmApplied times-frac49.2
Simplified49.2
Taylor expanded around -inf 8.5
Simplified8.5
if -2.1519584443960466e+98 < re Initial program 21.2
Simplified21.2
rmApplied times-frac21.1
Simplified21.1
rmApplied div-inv21.1
Final simplification16.6
herbie shell --seed 2019120
(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))))