Average Error: 31.5 → 0.3
Time: 20.5s
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 r77880 = im;
        double r77881 = re;
        double r77882 = atan2(r77880, r77881);
        double r77883 = base;
        double r77884 = log(r77883);
        double r77885 = r77882 * r77884;
        double r77886 = r77881 * r77881;
        double r77887 = r77880 * r77880;
        double r77888 = r77886 + r77887;
        double r77889 = sqrt(r77888);
        double r77890 = log(r77889);
        double r77891 = 0.0;
        double r77892 = r77890 * r77891;
        double r77893 = r77885 - r77892;
        double r77894 = r77884 * r77884;
        double r77895 = r77891 * r77891;
        double r77896 = r77894 + r77895;
        double r77897 = r77893 / r77896;
        return r77897;
}

double f(double re, double im, double base) {
        double r77898 = im;
        double r77899 = re;
        double r77900 = atan2(r77898, r77899);
        double r77901 = base;
        double r77902 = log(r77901);
        double r77903 = r77900 / r77902;
        return r77903;
}

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 0 0.3

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

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

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

    \[\leadsto \color{blue}{{\left(\tan^{-1}_* \frac{im}{re}\right)}^{1}} \cdot {\left(\frac{1}{\log base}\right)}^{1}\]
  9. Applied pow-prod-down0.4

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

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

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

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))))