Average Error: 32.3 → 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 r37458 = im;
        double r37459 = re;
        double r37460 = atan2(r37458, r37459);
        double r37461 = base;
        double r37462 = log(r37461);
        double r37463 = r37460 * r37462;
        double r37464 = r37459 * r37459;
        double r37465 = r37458 * r37458;
        double r37466 = r37464 + r37465;
        double r37467 = sqrt(r37466);
        double r37468 = log(r37467);
        double r37469 = 0.0;
        double r37470 = r37468 * r37469;
        double r37471 = r37463 - r37470;
        double r37472 = r37462 * r37462;
        double r37473 = r37469 * r37469;
        double r37474 = r37472 + r37473;
        double r37475 = r37471 / r37474;
        return r37475;
}

double f(double re, double im, double base) {
        double r37476 = im;
        double r37477 = re;
        double r37478 = atan2(r37476, r37477);
        double r37479 = base;
        double r37480 = log(r37479);
        double r37481 = r37478 / r37480;
        return r37481;
}

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