\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\frac{\frac{1}{\log base}}{\frac{1}{\log \left(\mathsf{hypot}\left(re, im\right)\right)}}double f(double re, double im, double base) {
double r1098705 = re;
double r1098706 = r1098705 * r1098705;
double r1098707 = im;
double r1098708 = r1098707 * r1098707;
double r1098709 = r1098706 + r1098708;
double r1098710 = sqrt(r1098709);
double r1098711 = log(r1098710);
double r1098712 = base;
double r1098713 = log(r1098712);
double r1098714 = r1098711 * r1098713;
double r1098715 = atan2(r1098707, r1098705);
double r1098716 = 0.0;
double r1098717 = r1098715 * r1098716;
double r1098718 = r1098714 + r1098717;
double r1098719 = r1098713 * r1098713;
double r1098720 = r1098716 * r1098716;
double r1098721 = r1098719 + r1098720;
double r1098722 = r1098718 / r1098721;
return r1098722;
}
double f(double re, double im, double base) {
double r1098723 = 1.0;
double r1098724 = base;
double r1098725 = log(r1098724);
double r1098726 = r1098723 / r1098725;
double r1098727 = re;
double r1098728 = im;
double r1098729 = hypot(r1098727, r1098728);
double r1098730 = log(r1098729);
double r1098731 = r1098723 / r1098730;
double r1098732 = r1098726 / r1098731;
return r1098732;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 30.7
Simplified0.4
rmApplied clear-num0.4
rmApplied div-inv0.5
Applied associate-/r*0.5
Final simplification0.5
herbie shell --seed 2019146 +o rules:numerics
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0))))