\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 r93666 = im;
double r93667 = re;
double r93668 = atan2(r93666, r93667);
double r93669 = base;
double r93670 = log(r93669);
double r93671 = r93668 * r93670;
double r93672 = r93667 * r93667;
double r93673 = r93666 * r93666;
double r93674 = r93672 + r93673;
double r93675 = sqrt(r93674);
double r93676 = log(r93675);
double r93677 = 0.0;
double r93678 = r93676 * r93677;
double r93679 = r93671 - r93678;
double r93680 = r93670 * r93670;
double r93681 = r93677 * r93677;
double r93682 = r93680 + r93681;
double r93683 = r93679 / r93682;
return r93683;
}
double f(double re, double im, double base) {
double r93684 = 1.0;
double r93685 = base;
double r93686 = log(r93685);
double r93687 = im;
double r93688 = re;
double r93689 = atan2(r93687, r93688);
double r93690 = r93686 / r93689;
double r93691 = r93684 / r93690;
return r93691;
}



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.5
Final simplification0.5
herbie shell --seed 2019326
(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))))