Average Error: 30.6 → 0.4
Time: 1.2m
Precision: 64
\[\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}\]
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}

Error

Bits error versus re

Bits error versus im

Bits error versus base

Derivation

  1. Initial program 30.6

    \[\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}\]
  2. Simplified0.4

    \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re^2 + im^2}^*\right)}{\log base}}\]
  3. Using strategy rm
  4. Applied div-inv0.4

    \[\leadsto \color{blue}{\log \left(\sqrt{re^2 + im^2}^*\right) \cdot \frac{1}{\log base}}\]
  5. Final simplification0.4

    \[\leadsto \log \left(\sqrt{re^2 + im^2}^*\right) \cdot \frac{1}{\log base}\]

Reproduce

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))))