double f(double re, double im, double base) {
double r1331971 = re;
double r1331972 = r1331971 * r1331971;
double r1331973 = im;
double r1331974 = r1331973 * r1331973;
double r1331975 = r1331972 + r1331974;
double r1331976 = sqrt(r1331975);
double r1331977 = log(r1331976);
double r1331978 = base;
double r1331979 = log(r1331978);
double r1331980 = r1331977 * r1331979;
double r1331981 = atan2(r1331973, r1331971);
double r1331982 = 0.0;
double r1331983 = r1331981 * r1331982;
double r1331984 = r1331980 + r1331983;
double r1331985 = r1331979 * r1331979;
double r1331986 = r1331982 * r1331982;
double r1331987 = r1331985 + r1331986;
double r1331988 = r1331984 / r1331987;
return r1331988;
}
double f(double re, double im, double base) {
double r1331989 = re;
double r1331990 = im;
double r1331991 = hypot(r1331989, r1331990);
double r1331992 = log(r1331991);
double r1331993 = 1.0;
double r1331994 = base;
double r1331995 = log(r1331994);
double r1331996 = r1331993 / r1331995;
double r1331997 = r1331992 * r1331996;
return r1331997;
}
\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(\sqrt{re^2 + im^2}^*\right) \cdot \frac{1}{\log base}


Bits error versus re



Bits error versus im



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