Average Error: 31.7 → 0.4
Time: 4.3s
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}\]
\[\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\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}
\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}
double f(double re, double im, double base) {
        double r81681 = im;
        double r81682 = re;
        double r81683 = atan2(r81681, r81682);
        double r81684 = base;
        double r81685 = log(r81684);
        double r81686 = r81683 * r81685;
        double r81687 = r81682 * r81682;
        double r81688 = r81681 * r81681;
        double r81689 = r81687 + r81688;
        double r81690 = sqrt(r81689);
        double r81691 = log(r81690);
        double r81692 = 0.0;
        double r81693 = r81691 * r81692;
        double r81694 = r81686 - r81693;
        double r81695 = r81685 * r81685;
        double r81696 = r81692 * r81692;
        double r81697 = r81695 + r81696;
        double r81698 = r81694 / r81697;
        return r81698;
}

double f(double re, double im, double base) {
        double r81699 = im;
        double r81700 = re;
        double r81701 = atan2(r81699, r81700);
        double r81702 = 1.0;
        double r81703 = base;
        double r81704 = log(r81703);
        double r81705 = r81702 / r81704;
        double r81706 = r81701 * r81705;
        return r81706;
}

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.7

    \[\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. Using strategy rm
  4. Applied div-inv0.4

    \[\leadsto \color{blue}{\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}}\]
  5. Final simplification0.4

    \[\leadsto \tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}\]

Reproduce

herbie shell --seed 2020060 +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))))