Average Error: 32.2 → 0.3
Time: 5.4s
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 r35487 = im;
        double r35488 = re;
        double r35489 = atan2(r35487, r35488);
        double r35490 = base;
        double r35491 = log(r35490);
        double r35492 = r35489 * r35491;
        double r35493 = r35488 * r35488;
        double r35494 = r35487 * r35487;
        double r35495 = r35493 + r35494;
        double r35496 = sqrt(r35495);
        double r35497 = log(r35496);
        double r35498 = 0.0;
        double r35499 = r35497 * r35498;
        double r35500 = r35492 - r35499;
        double r35501 = r35491 * r35491;
        double r35502 = r35498 * r35498;
        double r35503 = r35501 + r35502;
        double r35504 = r35500 / r35503;
        return r35504;
}

double f(double re, double im, double base) {
        double r35505 = im;
        double r35506 = re;
        double r35507 = atan2(r35505, r35506);
        double r35508 = base;
        double r35509 = log(r35508);
        double r35510 = r35507 / r35509;
        return r35510;
}

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 2020034 +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))))