Average Error: 30.9 → 0.6
Time: 21.5s
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{1}{\frac{\log base}{\tan^{-1}_* \frac{im}{re}}}\]
\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{1}{\frac{\log base}{\tan^{-1}_* \frac{im}{re}}}
double f(double re, double im, double base) {
        double r81677 = im;
        double r81678 = re;
        double r81679 = atan2(r81677, r81678);
        double r81680 = base;
        double r81681 = log(r81680);
        double r81682 = r81679 * r81681;
        double r81683 = r81678 * r81678;
        double r81684 = r81677 * r81677;
        double r81685 = r81683 + r81684;
        double r81686 = sqrt(r81685);
        double r81687 = log(r81686);
        double r81688 = 0.0;
        double r81689 = r81687 * r81688;
        double r81690 = r81682 - r81689;
        double r81691 = r81681 * r81681;
        double r81692 = r81688 * r81688;
        double r81693 = r81691 + r81692;
        double r81694 = r81690 / r81693;
        return r81694;
}

double f(double re, double im, double base) {
        double r81695 = 1.0;
        double r81696 = base;
        double r81697 = log(r81696);
        double r81698 = im;
        double r81699 = re;
        double r81700 = atan2(r81698, r81699);
        double r81701 = r81697 / r81700;
        double r81702 = r81695 / r81701;
        return r81702;
}

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 30.9

    \[\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 clear-num0.6

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

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

Reproduce

herbie shell --seed 2019303 
(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))))