\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}}{\log \left(\sqrt[3]{1}\right) \cdot 2 + \log \left(\frac{1}{base}\right)}double f(double re, double im, double base) {
double r33689 = im;
double r33690 = re;
double r33691 = atan2(r33689, r33690);
double r33692 = base;
double r33693 = log(r33692);
double r33694 = r33691 * r33693;
double r33695 = r33690 * r33690;
double r33696 = r33689 * r33689;
double r33697 = r33695 + r33696;
double r33698 = sqrt(r33697);
double r33699 = log(r33698);
double r33700 = 0.0;
double r33701 = r33699 * r33700;
double r33702 = r33694 - r33701;
double r33703 = r33693 * r33693;
double r33704 = r33700 * r33700;
double r33705 = r33703 + r33704;
double r33706 = r33702 / r33705;
return r33706;
}
double f(double re, double im, double base) {
double r33707 = -1.0;
double r33708 = im;
double r33709 = re;
double r33710 = atan2(r33708, r33709);
double r33711 = 1.0;
double r33712 = cbrt(r33711);
double r33713 = log(r33712);
double r33714 = 2.0;
double r33715 = r33713 * r33714;
double r33716 = base;
double r33717 = r33711 / r33716;
double r33718 = log(r33717);
double r33719 = r33715 + r33718;
double r33720 = r33710 / r33719;
double r33721 = r33707 * r33720;
return r33721;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 32.2
Taylor expanded around inf 0.3
rmApplied add-cube-cbrt0.3
Applied log-prod0.4
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied cbrt-prod0.4
Applied log-prod0.4
Applied distribute-rgt-in0.4
Applied associate-+l+0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2020025
(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))))