\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 r30631 = im;
double r30632 = re;
double r30633 = atan2(r30631, r30632);
double r30634 = base;
double r30635 = log(r30634);
double r30636 = r30633 * r30635;
double r30637 = r30632 * r30632;
double r30638 = r30631 * r30631;
double r30639 = r30637 + r30638;
double r30640 = sqrt(r30639);
double r30641 = log(r30640);
double r30642 = 0.0;
double r30643 = r30641 * r30642;
double r30644 = r30636 - r30643;
double r30645 = r30635 * r30635;
double r30646 = r30642 * r30642;
double r30647 = r30645 + r30646;
double r30648 = r30644 / r30647;
return r30648;
}
double f(double re, double im, double base) {
double r30649 = im;
double r30650 = re;
double r30651 = atan2(r30649, r30650);
double r30652 = base;
double r30653 = log(r30652);
double r30654 = r30651 / r30653;
return r30654;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 32.3
Taylor expanded around 0 0.3
rmApplied div-inv0.4
rmApplied *-un-lft-identity0.4
Applied associate-*l*0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019322
(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))))