Average Error: 30.8 → 0.7
Time: 18.6s
Precision: 64
\[\frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
\[\tan^{-1}_* \frac{im}{re} \cdot \sqrt[3]{\left(\frac{1}{\log base} \cdot \frac{1}{\log base}\right) \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}{\log base \cdot \log base + 0 \cdot 0}
\tan^{-1}_* \frac{im}{re} \cdot \sqrt[3]{\left(\frac{1}{\log base} \cdot \frac{1}{\log base}\right) \cdot \frac{1}{\log base}}
double f(double re, double im, double base) {
        double r999844 = im;
        double r999845 = re;
        double r999846 = atan2(r999844, r999845);
        double r999847 = base;
        double r999848 = log(r999847);
        double r999849 = r999846 * r999848;
        double r999850 = r999845 * r999845;
        double r999851 = r999844 * r999844;
        double r999852 = r999850 + r999851;
        double r999853 = sqrt(r999852);
        double r999854 = log(r999853);
        double r999855 = 0.0;
        double r999856 = r999854 * r999855;
        double r999857 = r999849 - r999856;
        double r999858 = r999848 * r999848;
        double r999859 = r999855 * r999855;
        double r999860 = r999858 + r999859;
        double r999861 = r999857 / r999860;
        return r999861;
}

double f(double re, double im, double base) {
        double r999862 = im;
        double r999863 = re;
        double r999864 = atan2(r999862, r999863);
        double r999865 = 1.0;
        double r999866 = base;
        double r999867 = log(r999866);
        double r999868 = r999865 / r999867;
        double r999869 = r999868 * r999868;
        double r999870 = r999869 * r999868;
        double r999871 = cbrt(r999870);
        double r999872 = r999864 * r999871;
        return r999872;
}

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

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

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

    \[\leadsto \color{blue}{\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}}\]
  5. Using strategy rm
  6. Applied add-cbrt-cube0.7

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

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

Reproduce

herbie shell --seed 2019153 +o rules:numerics
(FPCore (re im base)
  :name "math.log/2 on complex, imaginary part"
  (/ (- (* (atan2 im re) (log base)) (* (log (sqrt (+ (* re re) (* im im)))) 0)) (+ (* (log base) (log base)) (* 0 0))))