Average Error: 31.8 → 0.3
Time: 6.2s
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{\tan^{-1}_* \frac{im}{re}}{2 \cdot \log \left({\left(\frac{1}{base}\right)}^{\frac{1}{3}}\right) + \log \left(\sqrt[3]{\frac{1}{base}}\right)}\]
\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{\tan^{-1}_* \frac{im}{re}}{2 \cdot \log \left({\left(\frac{1}{base}\right)}^{\frac{1}{3}}\right) + \log \left(\sqrt[3]{\frac{1}{base}}\right)}
double f(double re, double im, double base) {
        double r45980 = im;
        double r45981 = re;
        double r45982 = atan2(r45980, r45981);
        double r45983 = base;
        double r45984 = log(r45983);
        double r45985 = r45982 * r45984;
        double r45986 = r45981 * r45981;
        double r45987 = r45980 * r45980;
        double r45988 = r45986 + r45987;
        double r45989 = sqrt(r45988);
        double r45990 = log(r45989);
        double r45991 = 0.0;
        double r45992 = r45990 * r45991;
        double r45993 = r45985 - r45992;
        double r45994 = r45984 * r45984;
        double r45995 = r45991 * r45991;
        double r45996 = r45994 + r45995;
        double r45997 = r45993 / r45996;
        return r45997;
}

double f(double re, double im, double base) {
        double r45998 = -1.0;
        double r45999 = im;
        double r46000 = re;
        double r46001 = atan2(r45999, r46000);
        double r46002 = 2.0;
        double r46003 = 1.0;
        double r46004 = base;
        double r46005 = r46003 / r46004;
        double r46006 = 0.3333333333333333;
        double r46007 = pow(r46005, r46006);
        double r46008 = log(r46007);
        double r46009 = r46002 * r46008;
        double r46010 = cbrt(r46005);
        double r46011 = log(r46010);
        double r46012 = r46009 + r46011;
        double r46013 = r46001 / r46012;
        double r46014 = r45998 * r46013;
        return r46014;
}

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 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 add-cube-cbrt0.3

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

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

    \[\leadsto -1 \cdot \frac{\tan^{-1}_* \frac{im}{re}}{\color{blue}{2 \cdot \log \left(\sqrt[3]{\frac{1}{base}}\right)} + \log \left(\sqrt[3]{\frac{1}{base}}\right)}\]
  7. Using strategy rm
  8. Applied pow1/30.3

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

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

Reproduce

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