\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{1}{\frac{\log base}{\log \left(\mathsf{hypot}\left(re, im\right)\right)}}double f(double re, double im, double base) {
double r1645671 = re;
double r1645672 = r1645671 * r1645671;
double r1645673 = im;
double r1645674 = r1645673 * r1645673;
double r1645675 = r1645672 + r1645674;
double r1645676 = sqrt(r1645675);
double r1645677 = log(r1645676);
double r1645678 = base;
double r1645679 = log(r1645678);
double r1645680 = r1645677 * r1645679;
double r1645681 = atan2(r1645673, r1645671);
double r1645682 = 0.0;
double r1645683 = r1645681 * r1645682;
double r1645684 = r1645680 + r1645683;
double r1645685 = r1645679 * r1645679;
double r1645686 = r1645682 * r1645682;
double r1645687 = r1645685 + r1645686;
double r1645688 = r1645684 / r1645687;
return r1645688;
}
double f(double re, double im, double base) {
double r1645689 = 1.0;
double r1645690 = base;
double r1645691 = log(r1645690);
double r1645692 = re;
double r1645693 = im;
double r1645694 = hypot(r1645692, r1645693);
double r1645695 = log(r1645694);
double r1645696 = r1645691 / r1645695;
double r1645697 = r1645689 / r1645696;
return r1645697;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 30.9
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied associate-/l*0.4
Final simplification0.4
herbie shell --seed 2019138 +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))))