Average Error: 31.8 → 0.3
Time: 10.6s
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 r72747 = im;
        double r72748 = re;
        double r72749 = atan2(r72747, r72748);
        double r72750 = base;
        double r72751 = log(r72750);
        double r72752 = r72749 * r72751;
        double r72753 = r72748 * r72748;
        double r72754 = r72747 * r72747;
        double r72755 = r72753 + r72754;
        double r72756 = sqrt(r72755);
        double r72757 = log(r72756);
        double r72758 = 0.0;
        double r72759 = r72757 * r72758;
        double r72760 = r72752 - r72759;
        double r72761 = r72751 * r72751;
        double r72762 = r72758 * r72758;
        double r72763 = r72761 + r72762;
        double r72764 = r72760 / r72763;
        return r72764;
}

double f(double re, double im, double base) {
        double r72765 = im;
        double r72766 = re;
        double r72767 = atan2(r72765, r72766);
        double r72768 = base;
        double r72769 = log(r72768);
        double r72770 = r72767 / r72769;
        return r72770;
}

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

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

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

Reproduce

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