\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{1}{\frac{\log base}{\tan^{-1}_* \frac{im}{re}}}double f(double re, double im, double base) {
double r78429 = im;
double r78430 = re;
double r78431 = atan2(r78429, r78430);
double r78432 = base;
double r78433 = log(r78432);
double r78434 = r78431 * r78433;
double r78435 = r78430 * r78430;
double r78436 = r78429 * r78429;
double r78437 = r78435 + r78436;
double r78438 = sqrt(r78437);
double r78439 = log(r78438);
double r78440 = 0.0;
double r78441 = r78439 * r78440;
double r78442 = r78434 - r78441;
double r78443 = r78433 * r78433;
double r78444 = r78440 * r78440;
double r78445 = r78443 + r78444;
double r78446 = r78442 / r78445;
return r78446;
}
double f(double re, double im, double base) {
double r78447 = 1.0;
double r78448 = base;
double r78449 = log(r78448);
double r78450 = im;
double r78451 = re;
double r78452 = atan2(r78450, r78451);
double r78453 = r78449 / r78452;
double r78454 = r78447 / r78453;
return r78454;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.8
Taylor expanded around 0 0.3
rmApplied clear-num0.6
Final simplification0.6
herbie shell --seed 2019346 +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))))