\frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\frac{1}{\frac{1}{\frac{\tan^{-1}_* \frac{im}{re}}{\log base}}}double f(double re, double im, double base) {
double r108879 = im;
double r108880 = re;
double r108881 = atan2(r108879, r108880);
double r108882 = base;
double r108883 = log(r108882);
double r108884 = r108881 * r108883;
double r108885 = r108880 * r108880;
double r108886 = r108879 * r108879;
double r108887 = r108885 + r108886;
double r108888 = sqrt(r108887);
double r108889 = log(r108888);
double r108890 = 0.0;
double r108891 = r108889 * r108890;
double r108892 = r108884 - r108891;
double r108893 = r108883 * r108883;
double r108894 = r108890 * r108890;
double r108895 = r108893 + r108894;
double r108896 = r108892 / r108895;
return r108896;
}
double f(double re, double im, double base) {
double r108897 = 1.0;
double r108898 = im;
double r108899 = re;
double r108900 = atan2(r108898, r108899);
double r108901 = base;
double r108902 = log(r108901);
double r108903 = r108900 / r108902;
double r108904 = r108897 / r108903;
double r108905 = r108897 / r108904;
return r108905;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 32.3
Taylor expanded around 0 0.3
rmApplied clear-num0.5
rmApplied clear-num0.5
Final simplification0.5
herbie shell --seed 2019350
(FPCore (re im base)
:name "math.log/2 on complex, imaginary part"
:precision binary64
(/ (- (* (atan2 im re) (log base)) (* (log (sqrt (+ (* re re) (* im im)))) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))