\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(\frac{{\left({base}^{\frac{1}{3}}\right)}^{\left(-2\right)}}{{base}^{\frac{1}{3}}}\right)}double f(double re, double im, double base) {
double r58636 = im;
double r58637 = re;
double r58638 = atan2(r58636, r58637);
double r58639 = base;
double r58640 = log(r58639);
double r58641 = r58638 * r58640;
double r58642 = r58637 * r58637;
double r58643 = r58636 * r58636;
double r58644 = r58642 + r58643;
double r58645 = sqrt(r58644);
double r58646 = log(r58645);
double r58647 = 0.0;
double r58648 = r58646 * r58647;
double r58649 = r58641 - r58648;
double r58650 = r58640 * r58640;
double r58651 = r58647 * r58647;
double r58652 = r58650 + r58651;
double r58653 = r58649 / r58652;
return r58653;
}
double f(double re, double im, double base) {
double r58654 = -1.0;
double r58655 = im;
double r58656 = re;
double r58657 = atan2(r58655, r58656);
double r58658 = base;
double r58659 = 0.3333333333333333;
double r58660 = pow(r58658, r58659);
double r58661 = 2.0;
double r58662 = -r58661;
double r58663 = pow(r58660, r58662);
double r58664 = r58663 / r58660;
double r58665 = log(r58664);
double r58666 = r58657 / r58665;
double r58667 = r58654 * r58666;
return r58667;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.8
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
Taylor expanded around inf 0.3
rmApplied add-log-exp0.3
Applied sum-log0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2020001
(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))))