\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 r89063 = im;
double r89064 = re;
double r89065 = atan2(r89063, r89064);
double r89066 = base;
double r89067 = log(r89066);
double r89068 = r89065 * r89067;
double r89069 = r89064 * r89064;
double r89070 = r89063 * r89063;
double r89071 = r89069 + r89070;
double r89072 = sqrt(r89071);
double r89073 = log(r89072);
double r89074 = 0.0;
double r89075 = r89073 * r89074;
double r89076 = r89068 - r89075;
double r89077 = r89067 * r89067;
double r89078 = r89074 * r89074;
double r89079 = r89077 + r89078;
double r89080 = r89076 / r89079;
return r89080;
}
double f(double re, double im, double base) {
double r89081 = im;
double r89082 = re;
double r89083 = atan2(r89081, r89082);
double r89084 = base;
double r89085 = log(r89084);
double r89086 = r89083 / r89085;
return r89086;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.7
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 2020060
(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))))