\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 r39698 = im;
double r39699 = re;
double r39700 = atan2(r39698, r39699);
double r39701 = base;
double r39702 = log(r39701);
double r39703 = r39700 * r39702;
double r39704 = r39699 * r39699;
double r39705 = r39698 * r39698;
double r39706 = r39704 + r39705;
double r39707 = sqrt(r39706);
double r39708 = log(r39707);
double r39709 = 0.0;
double r39710 = r39708 * r39709;
double r39711 = r39703 - r39710;
double r39712 = r39702 * r39702;
double r39713 = r39709 * r39709;
double r39714 = r39712 + r39713;
double r39715 = r39711 / r39714;
return r39715;
}
double f(double re, double im, double base) {
double r39716 = im;
double r39717 = re;
double r39718 = atan2(r39716, r39717);
double r39719 = base;
double r39720 = log(r39719);
double r39721 = -r39720;
double r39722 = r39718 / r39721;
double r39723 = -r39722;
return r39723;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.8
Taylor expanded around inf 0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019212
(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))))