Average Error: 32.1 → 0.4
Time: 15.9s
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 r84768 = im;
        double r84769 = re;
        double r84770 = atan2(r84768, r84769);
        double r84771 = base;
        double r84772 = log(r84771);
        double r84773 = r84770 * r84772;
        double r84774 = r84769 * r84769;
        double r84775 = r84768 * r84768;
        double r84776 = r84774 + r84775;
        double r84777 = sqrt(r84776);
        double r84778 = log(r84777);
        double r84779 = 0.0;
        double r84780 = r84778 * r84779;
        double r84781 = r84773 - r84780;
        double r84782 = r84772 * r84772;
        double r84783 = r84779 * r84779;
        double r84784 = r84782 + r84783;
        double r84785 = r84781 / r84784;
        return r84785;
}

double f(double re, double im, double base) {
        double r84786 = im;
        double r84787 = re;
        double r84788 = atan2(r84786, r84787);
        double r84789 = -1.0;
        double r84790 = base;
        double r84791 = log(r84790);
        double r84792 = r84789 / r84791;
        double r84793 = r84788 * r84792;
        double r84794 = -r84793;
        return r84794;
}

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

    \[\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 inf 0.3

    \[\leadsto \color{blue}{-1 \cdot \frac{\tan^{-1}_* \frac{im}{re}}{\log \left(\frac{1}{base}\right)}}\]
  3. Simplified0.3

    \[\leadsto \color{blue}{-\frac{\tan^{-1}_* \frac{im}{re}}{-\log base}}\]
  4. Using strategy rm
  5. Applied div-inv0.4

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

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

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

Reproduce

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