\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 r82654 = im;
double r82655 = re;
double r82656 = atan2(r82654, r82655);
double r82657 = base;
double r82658 = log(r82657);
double r82659 = r82656 * r82658;
double r82660 = r82655 * r82655;
double r82661 = r82654 * r82654;
double r82662 = r82660 + r82661;
double r82663 = sqrt(r82662);
double r82664 = log(r82663);
double r82665 = 0.0;
double r82666 = r82664 * r82665;
double r82667 = r82659 - r82666;
double r82668 = r82658 * r82658;
double r82669 = r82665 * r82665;
double r82670 = r82668 + r82669;
double r82671 = r82667 / r82670;
return r82671;
}
double f(double re, double im, double base) {
double r82672 = 1.0;
double r82673 = base;
double r82674 = log(r82673);
double r82675 = im;
double r82676 = re;
double r82677 = atan2(r82675, r82676);
double r82678 = r82674 / r82677;
double r82679 = r82672 / r82678;
return r82679;
}



Bits error versus re



Bits error versus im



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