Average Error: 31.8 → 0.5
Time: 20.8s
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 r93666 = im;
        double r93667 = re;
        double r93668 = atan2(r93666, r93667);
        double r93669 = base;
        double r93670 = log(r93669);
        double r93671 = r93668 * r93670;
        double r93672 = r93667 * r93667;
        double r93673 = r93666 * r93666;
        double r93674 = r93672 + r93673;
        double r93675 = sqrt(r93674);
        double r93676 = log(r93675);
        double r93677 = 0.0;
        double r93678 = r93676 * r93677;
        double r93679 = r93671 - r93678;
        double r93680 = r93670 * r93670;
        double r93681 = r93677 * r93677;
        double r93682 = r93680 + r93681;
        double r93683 = r93679 / r93682;
        return r93683;
}

double f(double re, double im, double base) {
        double r93684 = 1.0;
        double r93685 = base;
        double r93686 = log(r93685);
        double r93687 = im;
        double r93688 = re;
        double r93689 = atan2(r93687, r93688);
        double r93690 = r93686 / r93689;
        double r93691 = r93684 / r93690;
        return r93691;
}

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

    \[\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.5

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

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

Reproduce

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