Average Error: 31.8 → 0.3
Time: 4.1s
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 r33224 = im;
        double r33225 = re;
        double r33226 = atan2(r33224, r33225);
        double r33227 = base;
        double r33228 = log(r33227);
        double r33229 = r33226 * r33228;
        double r33230 = r33225 * r33225;
        double r33231 = r33224 * r33224;
        double r33232 = r33230 + r33231;
        double r33233 = sqrt(r33232);
        double r33234 = log(r33233);
        double r33235 = 0.0;
        double r33236 = r33234 * r33235;
        double r33237 = r33229 - r33236;
        double r33238 = r33228 * r33228;
        double r33239 = r33235 * r33235;
        double r33240 = r33238 + r33239;
        double r33241 = r33237 / r33240;
        return r33241;
}

double f(double re, double im, double base) {
        double r33242 = im;
        double r33243 = re;
        double r33244 = atan2(r33242, r33243);
        double r33245 = base;
        double r33246 = log(r33245);
        double r33247 = r33244 / r33246;
        return r33247;
}

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. 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 2020064 
(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))))