\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 r38630 = im;
double r38631 = re;
double r38632 = atan2(r38630, r38631);
double r38633 = base;
double r38634 = log(r38633);
double r38635 = r38632 * r38634;
double r38636 = r38631 * r38631;
double r38637 = r38630 * r38630;
double r38638 = r38636 + r38637;
double r38639 = sqrt(r38638);
double r38640 = log(r38639);
double r38641 = 0.0;
double r38642 = r38640 * r38641;
double r38643 = r38635 - r38642;
double r38644 = r38634 * r38634;
double r38645 = r38641 * r38641;
double r38646 = r38644 + r38645;
double r38647 = r38643 / r38646;
return r38647;
}
double f(double re, double im, double base) {
double r38648 = im;
double r38649 = re;
double r38650 = atan2(r38648, r38649);
double r38651 = base;
double r38652 = log(r38651);
double r38653 = r38650 / r38652;
return r38653;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.7
Taylor expanded around 0 0.3
rmApplied div-inv0.4
rmApplied pow10.4
Applied pow10.4
Applied pow-prod-down0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2020056 +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))))