Average Error: 31.6 → 0.3
Time: 22.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 r2656036 = im;
        double r2656037 = re;
        double r2656038 = atan2(r2656036, r2656037);
        double r2656039 = base;
        double r2656040 = log(r2656039);
        double r2656041 = r2656038 * r2656040;
        double r2656042 = r2656037 * r2656037;
        double r2656043 = r2656036 * r2656036;
        double r2656044 = r2656042 + r2656043;
        double r2656045 = sqrt(r2656044);
        double r2656046 = log(r2656045);
        double r2656047 = 0.0;
        double r2656048 = r2656046 * r2656047;
        double r2656049 = r2656041 - r2656048;
        double r2656050 = r2656040 * r2656040;
        double r2656051 = r2656047 * r2656047;
        double r2656052 = r2656050 + r2656051;
        double r2656053 = r2656049 / r2656052;
        return r2656053;
}

double f(double re, double im, double base) {
        double r2656054 = im;
        double r2656055 = re;
        double r2656056 = atan2(r2656054, r2656055);
        double r2656057 = base;
        double r2656058 = log(r2656057);
        double r2656059 = r2656056 / r2656058;
        return r2656059;
}

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{\log base \cdot \tan^{-1}_* \frac{im}{re} - \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 2019172 +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))))