Average Error: 32.2 → 0.3
Time: 4.6s
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 r39353 = im;
        double r39354 = re;
        double r39355 = atan2(r39353, r39354);
        double r39356 = base;
        double r39357 = log(r39356);
        double r39358 = r39355 * r39357;
        double r39359 = r39354 * r39354;
        double r39360 = r39353 * r39353;
        double r39361 = r39359 + r39360;
        double r39362 = sqrt(r39361);
        double r39363 = log(r39362);
        double r39364 = 0.0;
        double r39365 = r39363 * r39364;
        double r39366 = r39358 - r39365;
        double r39367 = r39357 * r39357;
        double r39368 = r39364 * r39364;
        double r39369 = r39367 + r39368;
        double r39370 = r39366 / r39369;
        return r39370;
}

double f(double re, double im, double base) {
        double r39371 = im;
        double r39372 = re;
        double r39373 = atan2(r39371, r39372);
        double r39374 = base;
        double r39375 = log(r39374);
        double r39376 = r39373 / r39375;
        return r39376;
}

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 32.2

    \[\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 2020027 +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))))