Average Error: 31.3 → 0.3
Time: 13.3s
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 r89044 = im;
        double r89045 = re;
        double r89046 = atan2(r89044, r89045);
        double r89047 = base;
        double r89048 = log(r89047);
        double r89049 = r89046 * r89048;
        double r89050 = r89045 * r89045;
        double r89051 = r89044 * r89044;
        double r89052 = r89050 + r89051;
        double r89053 = sqrt(r89052);
        double r89054 = log(r89053);
        double r89055 = 0.0;
        double r89056 = r89054 * r89055;
        double r89057 = r89049 - r89056;
        double r89058 = r89048 * r89048;
        double r89059 = r89055 * r89055;
        double r89060 = r89058 + r89059;
        double r89061 = r89057 / r89060;
        return r89061;
}

double f(double re, double im, double base) {
        double r89062 = im;
        double r89063 = re;
        double r89064 = atan2(r89062, r89063);
        double r89065 = base;
        double r89066 = log(r89065);
        double r89067 = r89064 / r89066;
        return r89067;
}

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

    \[\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. Taylor expanded around 0 0.3

    \[\leadsto \color{blue}{\frac{\tan^{-1}_* \frac{im}{re}}{\log base}}\]
  3. Using strategy rm
  4. Applied div-inv0.4

    \[\leadsto \color{blue}{\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}}\]
  5. Final simplification0.3

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

Reproduce

herbie shell --seed 2019298 
(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))))