Average Error: 30.9 → 0.6
Time: 20.1s
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 r82654 = im;
        double r82655 = re;
        double r82656 = atan2(r82654, r82655);
        double r82657 = base;
        double r82658 = log(r82657);
        double r82659 = r82656 * r82658;
        double r82660 = r82655 * r82655;
        double r82661 = r82654 * r82654;
        double r82662 = r82660 + r82661;
        double r82663 = sqrt(r82662);
        double r82664 = log(r82663);
        double r82665 = 0.0;
        double r82666 = r82664 * r82665;
        double r82667 = r82659 - r82666;
        double r82668 = r82658 * r82658;
        double r82669 = r82665 * r82665;
        double r82670 = r82668 + r82669;
        double r82671 = r82667 / r82670;
        return r82671;
}

double f(double re, double im, double base) {
        double r82672 = 1.0;
        double r82673 = base;
        double r82674 = log(r82673);
        double r82675 = im;
        double r82676 = re;
        double r82677 = atan2(r82675, r82676);
        double r82678 = r82674 / r82677;
        double r82679 = r82672 / r82678;
        return r82679;
}

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

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

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

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

Reproduce

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