Average Error: 31.4 → 0.5
Time: 6.0s
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}\]
\[-1 \cdot \frac{1}{\frac{\log \left(\frac{1}{base}\right)}{\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}
-1 \cdot \frac{1}{\frac{\log \left(\frac{1}{base}\right)}{\tan^{-1}_* \frac{im}{re}}}
double f(double re, double im, double base) {
        double r36857 = im;
        double r36858 = re;
        double r36859 = atan2(r36857, r36858);
        double r36860 = base;
        double r36861 = log(r36860);
        double r36862 = r36859 * r36861;
        double r36863 = r36858 * r36858;
        double r36864 = r36857 * r36857;
        double r36865 = r36863 + r36864;
        double r36866 = sqrt(r36865);
        double r36867 = log(r36866);
        double r36868 = 0.0;
        double r36869 = r36867 * r36868;
        double r36870 = r36862 - r36869;
        double r36871 = r36861 * r36861;
        double r36872 = r36868 * r36868;
        double r36873 = r36871 + r36872;
        double r36874 = r36870 / r36873;
        return r36874;
}

double f(double re, double im, double base) {
        double r36875 = -1.0;
        double r36876 = 1.0;
        double r36877 = base;
        double r36878 = r36876 / r36877;
        double r36879 = log(r36878);
        double r36880 = im;
        double r36881 = re;
        double r36882 = atan2(r36880, r36881);
        double r36883 = r36879 / r36882;
        double r36884 = r36876 / r36883;
        double r36885 = r36875 * r36884;
        return r36885;
}

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

    \[\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. Using strategy rm
  4. Applied clear-num0.5

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

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

Reproduce

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