\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 r89044 = im;
double r89045 = re;
double r89046 = atan2(r89044, r89045);
double r89047 = base;
double r89048 = log(r89047);
double r89049 = r89046 * r89048;
double r89050 = r89045 * r89045;
double r89051 = r89044 * r89044;
double r89052 = r89050 + r89051;
double r89053 = sqrt(r89052);
double r89054 = log(r89053);
double r89055 = 0.0;
double r89056 = r89054 * r89055;
double r89057 = r89049 - r89056;
double r89058 = r89048 * r89048;
double r89059 = r89055 * r89055;
double r89060 = r89058 + r89059;
double r89061 = r89057 / r89060;
return r89061;
}
double f(double re, double im, double base) {
double r89062 = im;
double r89063 = re;
double r89064 = atan2(r89062, r89063);
double r89065 = base;
double r89066 = log(r89065);
double r89067 = r89064 / r89066;
return r89067;
}



Bits error versus re



Bits error versus im



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