Average Error: 31.6 → 0.3
Time: 18.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 r35683 = im;
        double r35684 = re;
        double r35685 = atan2(r35683, r35684);
        double r35686 = base;
        double r35687 = log(r35686);
        double r35688 = r35685 * r35687;
        double r35689 = r35684 * r35684;
        double r35690 = r35683 * r35683;
        double r35691 = r35689 + r35690;
        double r35692 = sqrt(r35691);
        double r35693 = log(r35692);
        double r35694 = 0.0;
        double r35695 = r35693 * r35694;
        double r35696 = r35688 - r35695;
        double r35697 = r35687 * r35687;
        double r35698 = r35694 * r35694;
        double r35699 = r35697 + r35698;
        double r35700 = r35696 / r35699;
        return r35700;
}

double f(double re, double im, double base) {
        double r35701 = im;
        double r35702 = re;
        double r35703 = atan2(r35701, r35702);
        double r35704 = base;
        double r35705 = log(r35704);
        double r35706 = r35703 / r35705;
        return r35706;
}

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

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