\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}\log \left(\mathsf{hypot}\left(re, im\right)\right) \cdot \frac{1}{\log base}double f(double re, double im, double base) {
double r1817890 = re;
double r1817891 = r1817890 * r1817890;
double r1817892 = im;
double r1817893 = r1817892 * r1817892;
double r1817894 = r1817891 + r1817893;
double r1817895 = sqrt(r1817894);
double r1817896 = log(r1817895);
double r1817897 = base;
double r1817898 = log(r1817897);
double r1817899 = r1817896 * r1817898;
double r1817900 = atan2(r1817892, r1817890);
double r1817901 = 0.0;
double r1817902 = r1817900 * r1817901;
double r1817903 = r1817899 + r1817902;
double r1817904 = r1817898 * r1817898;
double r1817905 = r1817901 * r1817901;
double r1817906 = r1817904 + r1817905;
double r1817907 = r1817903 / r1817906;
return r1817907;
}
double f(double re, double im, double base) {
double r1817908 = re;
double r1817909 = im;
double r1817910 = hypot(r1817908, r1817909);
double r1817911 = log(r1817910);
double r1817912 = 1.0;
double r1817913 = base;
double r1817914 = log(r1817913);
double r1817915 = r1817912 / r1817914;
double r1817916 = r1817911 * r1817915;
return r1817916;
}



Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 31.1
Simplified0.4
rmApplied div-inv0.4
Final simplification0.4
herbie shell --seed 2019125 +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))))