Average Error: 31.7 → 0.3
Time: 30.2s
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 r8875833 = im;
        double r8875834 = re;
        double r8875835 = atan2(r8875833, r8875834);
        double r8875836 = base;
        double r8875837 = log(r8875836);
        double r8875838 = r8875835 * r8875837;
        double r8875839 = r8875834 * r8875834;
        double r8875840 = r8875833 * r8875833;
        double r8875841 = r8875839 + r8875840;
        double r8875842 = sqrt(r8875841);
        double r8875843 = log(r8875842);
        double r8875844 = 0.0;
        double r8875845 = r8875843 * r8875844;
        double r8875846 = r8875838 - r8875845;
        double r8875847 = r8875837 * r8875837;
        double r8875848 = r8875844 * r8875844;
        double r8875849 = r8875847 + r8875848;
        double r8875850 = r8875846 / r8875849;
        return r8875850;
}

double f(double re, double im, double base) {
        double r8875851 = im;
        double r8875852 = re;
        double r8875853 = atan2(r8875851, r8875852);
        double r8875854 = base;
        double r8875855 = log(r8875854);
        double r8875856 = r8875853 / r8875855;
        return r8875856;
}

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

    \[\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 - \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. Final simplification0.3

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

Reproduce

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