Average Error: 32.1 → 0.5
Time: 19.8s
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 r2527897 = im;
        double r2527898 = re;
        double r2527899 = atan2(r2527897, r2527898);
        double r2527900 = base;
        double r2527901 = log(r2527900);
        double r2527902 = r2527899 * r2527901;
        double r2527903 = r2527898 * r2527898;
        double r2527904 = r2527897 * r2527897;
        double r2527905 = r2527903 + r2527904;
        double r2527906 = sqrt(r2527905);
        double r2527907 = log(r2527906);
        double r2527908 = 0.0;
        double r2527909 = r2527907 * r2527908;
        double r2527910 = r2527902 - r2527909;
        double r2527911 = r2527901 * r2527901;
        double r2527912 = r2527908 * r2527908;
        double r2527913 = r2527911 + r2527912;
        double r2527914 = r2527910 / r2527913;
        return r2527914;
}

double f(double re, double im, double base) {
        double r2527915 = 1.0;
        double r2527916 = base;
        double r2527917 = log(r2527916);
        double r2527918 = im;
        double r2527919 = re;
        double r2527920 = atan2(r2527918, r2527919);
        double r2527921 = r2527917 / r2527920;
        double r2527922 = r2527915 / r2527921;
        return r2527922;
}

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(re, im\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))))