Average Error: 31.5 → 0.4
Time: 22.9s
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}{\log base} \cdot \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}{\log base} \cdot \tan^{-1}_* \frac{im}{re}
double f(double re, double im, double base) {
        double r25885 = im;
        double r25886 = re;
        double r25887 = atan2(r25885, r25886);
        double r25888 = base;
        double r25889 = log(r25888);
        double r25890 = r25887 * r25889;
        double r25891 = r25886 * r25886;
        double r25892 = r25885 * r25885;
        double r25893 = r25891 + r25892;
        double r25894 = sqrt(r25893);
        double r25895 = log(r25894);
        double r25896 = 0.0;
        double r25897 = r25895 * r25896;
        double r25898 = r25890 - r25897;
        double r25899 = r25889 * r25889;
        double r25900 = r25896 * r25896;
        double r25901 = r25899 + r25900;
        double r25902 = r25898 / r25901;
        return r25902;
}

double f(double re, double im, double base) {
        double r25903 = 1.0;
        double r25904 = base;
        double r25905 = log(r25904);
        double r25906 = r25903 / r25905;
        double r25907 = im;
        double r25908 = re;
        double r25909 = atan2(r25907, r25908);
        double r25910 = r25906 * r25909;
        return r25910;
}

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

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

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

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

    \[\leadsto -\color{blue}{\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{-\log base}}\]
  7. Simplified0.4

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

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

Reproduce

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