Average Error: 32.1 → 0.5
Time: 14.3s
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{1}{\frac{\log base}{\tan^{-1}_* \frac{im}{re}}}\]
\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{1}{\frac{\log base}{\tan^{-1}_* \frac{im}{re}}}
double f(double re, double im, double base) {
        double r1964958 = im;
        double r1964959 = re;
        double r1964960 = atan2(r1964958, r1964959);
        double r1964961 = base;
        double r1964962 = log(r1964961);
        double r1964963 = r1964960 * r1964962;
        double r1964964 = r1964959 * r1964959;
        double r1964965 = r1964958 * r1964958;
        double r1964966 = r1964964 + r1964965;
        double r1964967 = sqrt(r1964966);
        double r1964968 = log(r1964967);
        double r1964969 = 0.0;
        double r1964970 = r1964968 * r1964969;
        double r1964971 = r1964963 - r1964970;
        double r1964972 = r1964962 * r1964962;
        double r1964973 = r1964969 * r1964969;
        double r1964974 = r1964972 + r1964973;
        double r1964975 = r1964971 / r1964974;
        return r1964975;
}

double f(double re, double im, double base) {
        double r1964976 = 1.0;
        double r1964977 = base;
        double r1964978 = log(r1964977);
        double r1964979 = im;
        double r1964980 = re;
        double r1964981 = atan2(r1964979, r1964980);
        double r1964982 = r1964978 / r1964981;
        double r1964983 = r1964976 / r1964982;
        return r1964983;
}

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 32.1

    \[\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{\log base \cdot \tan^{-1}_* \frac{im}{re} - \log \left(\mathsf{hypot}\left(im, re\right)\right) \cdot 0.0}{\mathsf{fma}\left(\log base, \log base, 0.0 \cdot 0.0\right)}}\]
  3. Taylor expanded around 0 0.3

    \[\leadsto \color{blue}{\frac{\tan^{-1}_* \frac{im}{re}}{\log base}}\]
  4. Using strategy rm
  5. Applied clear-num0.5

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

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

Reproduce

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