Average Error: 31.6 → 0.3
Time: 16.2s
Precision: 64
\[\frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
\[\frac{\tan^{-1}_* \frac{im}{re}}{\log base}\]
\frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}
\frac{\tan^{-1}_* \frac{im}{re}}{\log base}
double f(double re, double im, double base) {
        double r30852 = im;
        double r30853 = re;
        double r30854 = atan2(r30852, r30853);
        double r30855 = base;
        double r30856 = log(r30855);
        double r30857 = r30854 * r30856;
        double r30858 = r30853 * r30853;
        double r30859 = r30852 * r30852;
        double r30860 = r30858 + r30859;
        double r30861 = sqrt(r30860);
        double r30862 = log(r30861);
        double r30863 = 0.0;
        double r30864 = r30862 * r30863;
        double r30865 = r30857 - r30864;
        double r30866 = r30856 * r30856;
        double r30867 = r30863 * r30863;
        double r30868 = r30866 + r30867;
        double r30869 = r30865 / r30868;
        return r30869;
}

double f(double re, double im, double base) {
        double r30870 = im;
        double r30871 = re;
        double r30872 = atan2(r30870, r30871);
        double r30873 = base;
        double r30874 = log(r30873);
        double r30875 = r30872 / r30874;
        return r30875;
}

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.6

    \[\frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
  2. Simplified0.4

    \[\leadsto \color{blue}{\frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\mathsf{hypot}\left(re, im\right)\right) \cdot 0.0}{\mathsf{fma}\left(\log base, \log base, 0.0 \cdot 0.0\right)}}\]
  3. Taylor expanded around -inf 64.0

    \[\leadsto \color{blue}{\frac{\tan^{-1}_* \frac{im}{re}}{\log -1 - \log \left(\frac{-1}{base}\right)}}\]
  4. Simplified0.3

    \[\leadsto \color{blue}{\frac{\tan^{-1}_* \frac{im}{re}}{0 + \log base}}\]
  5. Final simplification0.3

    \[\leadsto \frac{\tan^{-1}_* \frac{im}{re}}{\log base}\]

Reproduce

herbie shell --seed 2019195 +o rules:numerics
(FPCore (re im base)
  :name "math.log/2 on complex, imaginary part"
  (/ (- (* (atan2 im re) (log base)) (* (log (sqrt (+ (* re re) (* im im)))) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))