Average Error: 32.3 → 0.3
Time: 4.2s
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 r35561 = im;
        double r35562 = re;
        double r35563 = atan2(r35561, r35562);
        double r35564 = base;
        double r35565 = log(r35564);
        double r35566 = r35563 * r35565;
        double r35567 = r35562 * r35562;
        double r35568 = r35561 * r35561;
        double r35569 = r35567 + r35568;
        double r35570 = sqrt(r35569);
        double r35571 = log(r35570);
        double r35572 = 0.0;
        double r35573 = r35571 * r35572;
        double r35574 = r35566 - r35573;
        double r35575 = r35565 * r35565;
        double r35576 = r35572 * r35572;
        double r35577 = r35575 + r35576;
        double r35578 = r35574 / r35577;
        return r35578;
}

double f(double re, double im, double base) {
        double r35579 = im;
        double r35580 = re;
        double r35581 = atan2(r35579, r35580);
        double r35582 = base;
        double r35583 = log(r35582);
        double r35584 = r35581 / r35583;
        return r35584;
}

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 2020020 
(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))))