\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 r36982 = im;
double r36983 = re;
double r36984 = atan2(r36982, r36983);
double r36985 = base;
double r36986 = log(r36985);
double r36987 = r36984 * r36986;
double r36988 = r36983 * r36983;
double r36989 = r36982 * r36982;
double r36990 = r36988 + r36989;
double r36991 = sqrt(r36990);
double r36992 = log(r36991);
double r36993 = 0.0;
double r36994 = r36992 * r36993;
double r36995 = r36987 - r36994;
double r36996 = r36986 * r36986;
double r36997 = r36993 * r36993;
double r36998 = r36996 + r36997;
double r36999 = r36995 / r36998;
return r36999;
}
double f(double re, double im, double base) {
double r37000 = im;
double r37001 = re;
double r37002 = atan2(r37000, r37001);
double r37003 = -1.0;
double r37004 = base;
double r37005 = log(r37004);
double r37006 = -r37005;
double r37007 = r37003 / r37006;
double r37008 = r37002 * r37007;
return r37008;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.3
Taylor expanded around inf 0.3
Simplified0.3
rmApplied div-inv0.4
Final simplification0.4
herbie shell --seed 2019208
(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))))