\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}-1 \cdot \frac{\tan^{-1}_* \frac{im}{re}}{\left(-2\right) \cdot \log \left({base}^{\frac{1}{3}}\right) + \log \left(\frac{1}{\sqrt[3]{base}}\right)}double f(double re, double im, double base) {
double r39674 = im;
double r39675 = re;
double r39676 = atan2(r39674, r39675);
double r39677 = base;
double r39678 = log(r39677);
double r39679 = r39676 * r39678;
double r39680 = r39675 * r39675;
double r39681 = r39674 * r39674;
double r39682 = r39680 + r39681;
double r39683 = sqrt(r39682);
double r39684 = log(r39683);
double r39685 = 0.0;
double r39686 = r39684 * r39685;
double r39687 = r39679 - r39686;
double r39688 = r39678 * r39678;
double r39689 = r39685 * r39685;
double r39690 = r39688 + r39689;
double r39691 = r39687 / r39690;
return r39691;
}
double f(double re, double im, double base) {
double r39692 = -1.0;
double r39693 = im;
double r39694 = re;
double r39695 = atan2(r39693, r39694);
double r39696 = 2.0;
double r39697 = -r39696;
double r39698 = base;
double r39699 = 0.3333333333333333;
double r39700 = pow(r39698, r39699);
double r39701 = log(r39700);
double r39702 = r39697 * r39701;
double r39703 = 1.0;
double r39704 = cbrt(r39698);
double r39705 = r39703 / r39704;
double r39706 = log(r39705);
double r39707 = r39702 + r39706;
double r39708 = r39695 / r39707;
double r39709 = r39692 * r39708;
return r39709;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.6
Taylor expanded around inf 0.3
rmApplied add-cube-cbrt0.3
Applied add-cube-cbrt0.3
Applied times-frac0.3
Applied log-prod0.4
Simplified0.4
Simplified0.4
rmApplied pow1/30.3
Final simplification0.3
herbie shell --seed 2019362
(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))))