Average Error: 31.3 → 0.3
Time: 5.0s
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 r37039 = im;
        double r37040 = re;
        double r37041 = atan2(r37039, r37040);
        double r37042 = base;
        double r37043 = log(r37042);
        double r37044 = r37041 * r37043;
        double r37045 = r37040 * r37040;
        double r37046 = r37039 * r37039;
        double r37047 = r37045 + r37046;
        double r37048 = sqrt(r37047);
        double r37049 = log(r37048);
        double r37050 = 0.0;
        double r37051 = r37049 * r37050;
        double r37052 = r37044 - r37051;
        double r37053 = r37043 * r37043;
        double r37054 = r37050 * r37050;
        double r37055 = r37053 + r37054;
        double r37056 = r37052 / r37055;
        return r37056;
}

double f(double re, double im, double base) {
        double r37057 = im;
        double r37058 = re;
        double r37059 = atan2(r37057, r37058);
        double r37060 = base;
        double r37061 = log(r37060);
        double r37062 = r37059 / r37061;
        return r37062;
}

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

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

Reproduce

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