\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{\tan^{-1}_* \frac{im}{re}}{\log base}double f(double re, double im, double base) {
double r77880 = im;
double r77881 = re;
double r77882 = atan2(r77880, r77881);
double r77883 = base;
double r77884 = log(r77883);
double r77885 = r77882 * r77884;
double r77886 = r77881 * r77881;
double r77887 = r77880 * r77880;
double r77888 = r77886 + r77887;
double r77889 = sqrt(r77888);
double r77890 = log(r77889);
double r77891 = 0.0;
double r77892 = r77890 * r77891;
double r77893 = r77885 - r77892;
double r77894 = r77884 * r77884;
double r77895 = r77891 * r77891;
double r77896 = r77894 + r77895;
double r77897 = r77893 / r77896;
return r77897;
}
double f(double re, double im, double base) {
double r77898 = im;
double r77899 = re;
double r77900 = atan2(r77898, r77899);
double r77901 = base;
double r77902 = log(r77901);
double r77903 = r77900 / r77902;
return r77903;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.5
Simplified0.4
Taylor expanded around 0 0.3
rmApplied div-inv0.4
rmApplied pow10.4
Applied pow10.4
Applied pow-prod-down0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019325 +o rules:numerics
(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))))