\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 r72747 = im;
double r72748 = re;
double r72749 = atan2(r72747, r72748);
double r72750 = base;
double r72751 = log(r72750);
double r72752 = r72749 * r72751;
double r72753 = r72748 * r72748;
double r72754 = r72747 * r72747;
double r72755 = r72753 + r72754;
double r72756 = sqrt(r72755);
double r72757 = log(r72756);
double r72758 = 0.0;
double r72759 = r72757 * r72758;
double r72760 = r72752 - r72759;
double r72761 = r72751 * r72751;
double r72762 = r72758 * r72758;
double r72763 = r72761 + r72762;
double r72764 = r72760 / r72763;
return r72764;
}
double f(double re, double im, double base) {
double r72765 = im;
double r72766 = re;
double r72767 = atan2(r72765, r72766);
double r72768 = base;
double r72769 = log(r72768);
double r72770 = r72767 / r72769;
return r72770;
}



Bits error versus re



Bits error versus im



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