Average Error: 30.5 → 0.4
Time: 25.6s
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}\]
\[\frac{1}{\frac{\log base}{\log \left(\mathsf{hypot}\left(re, im\right)\right)}}\]
\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 r1424032 = re;
        double r1424033 = r1424032 * r1424032;
        double r1424034 = im;
        double r1424035 = r1424034 * r1424034;
        double r1424036 = r1424033 + r1424035;
        double r1424037 = sqrt(r1424036);
        double r1424038 = log(r1424037);
        double r1424039 = base;
        double r1424040 = log(r1424039);
        double r1424041 = r1424038 * r1424040;
        double r1424042 = atan2(r1424034, r1424032);
        double r1424043 = 0.0;
        double r1424044 = r1424042 * r1424043;
        double r1424045 = r1424041 + r1424044;
        double r1424046 = r1424040 * r1424040;
        double r1424047 = r1424043 * r1424043;
        double r1424048 = r1424046 + r1424047;
        double r1424049 = r1424045 / r1424048;
        return r1424049;
}

double f(double re, double im, double base) {
        double r1424050 = 1.0;
        double r1424051 = base;
        double r1424052 = log(r1424051);
        double r1424053 = re;
        double r1424054 = im;
        double r1424055 = hypot(r1424053, r1424054);
        double r1424056 = log(r1424055);
        double r1424057 = r1424052 / r1424056;
        double r1424058 = r1424050 / r1424057;
        return r1424058;
}

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 30.5

    \[\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(\mathsf{hypot}\left(re, im\right)\right)}{\log base}}\]
  3. Using strategy rm
  4. Applied clear-num0.4

    \[\leadsto \color{blue}{\frac{1}{\frac{\log base}{\log \left(\mathsf{hypot}\left(re, im\right)\right)}}}\]
  5. Final simplification0.4

    \[\leadsto \frac{1}{\frac{\log base}{\log \left(\mathsf{hypot}\left(re, im\right)\right)}}\]

Reproduce

herbie shell --seed 2019162 +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))))