\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}\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}double f(double re, double im, double base) {
double r97896 = im;
double r97897 = re;
double r97898 = atan2(r97896, r97897);
double r97899 = base;
double r97900 = log(r97899);
double r97901 = r97898 * r97900;
double r97902 = r97897 * r97897;
double r97903 = r97896 * r97896;
double r97904 = r97902 + r97903;
double r97905 = sqrt(r97904);
double r97906 = log(r97905);
double r97907 = 0.0;
double r97908 = r97906 * r97907;
double r97909 = r97901 - r97908;
double r97910 = r97900 * r97900;
double r97911 = r97907 * r97907;
double r97912 = r97910 + r97911;
double r97913 = r97909 / r97912;
return r97913;
}
double f(double re, double im, double base) {
double r97914 = im;
double r97915 = re;
double r97916 = atan2(r97914, r97915);
double r97917 = 1.0;
double r97918 = base;
double r97919 = log(r97918);
double r97920 = r97917 / r97919;
double r97921 = r97916 * r97920;
return r97921;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 32.0
Taylor expanded around 0 0.3
rmApplied div-inv0.4
Final simplification0.4
herbie shell --seed 2020089
(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))))