Average Error: 31.8 → 0.3
Time: 18.7s
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 r109055 = im;
        double r109056 = re;
        double r109057 = atan2(r109055, r109056);
        double r109058 = base;
        double r109059 = log(r109058);
        double r109060 = r109057 * r109059;
        double r109061 = r109056 * r109056;
        double r109062 = r109055 * r109055;
        double r109063 = r109061 + r109062;
        double r109064 = sqrt(r109063);
        double r109065 = log(r109064);
        double r109066 = 0.0;
        double r109067 = r109065 * r109066;
        double r109068 = r109060 - r109067;
        double r109069 = r109059 * r109059;
        double r109070 = r109066 * r109066;
        double r109071 = r109069 + r109070;
        double r109072 = r109068 / r109071;
        return r109072;
}

double f(double re, double im, double base) {
        double r109073 = im;
        double r109074 = re;
        double r109075 = atan2(r109073, r109074);
        double r109076 = base;
        double r109077 = log(r109076);
        double r109078 = r109075 / r109077;
        return r109078;
}

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

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

Reproduce

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