Average Error: 31.0 → 0.4
Time: 1.1m
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}\]
\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 r1246037 = re;
        double r1246038 = r1246037 * r1246037;
        double r1246039 = im;
        double r1246040 = r1246039 * r1246039;
        double r1246041 = r1246038 + r1246040;
        double r1246042 = sqrt(r1246041);
        double r1246043 = log(r1246042);
        double r1246044 = base;
        double r1246045 = log(r1246044);
        double r1246046 = r1246043 * r1246045;
        double r1246047 = atan2(r1246039, r1246037);
        double r1246048 = 0.0;
        double r1246049 = r1246047 * r1246048;
        double r1246050 = r1246046 + r1246049;
        double r1246051 = r1246045 * r1246045;
        double r1246052 = r1246048 * r1246048;
        double r1246053 = r1246051 + r1246052;
        double r1246054 = r1246050 / r1246053;
        return r1246054;
}

double f(double re, double im, double base) {
        double r1246055 = re;
        double r1246056 = im;
        double r1246057 = hypot(r1246055, r1246056);
        double r1246058 = log(r1246057);
        double r1246059 = 1.0;
        double r1246060 = base;
        double r1246061 = log(r1246060);
        double r1246062 = r1246059 / r1246061;
        double r1246063 = r1246058 * r1246062;
        return r1246063;
}

Error

Bits error versus re

Bits error versus im

Bits error versus base

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 31.0

    \[\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 2019104 +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))))