Average Error: 32.3 → 0.3
Time: 20.7s
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{\tan^{-1}_* \frac{im}{re}}{\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}
\frac{\tan^{-1}_* \frac{im}{re}}{\log base}
double f(double re, double im, double base) {
        double r30631 = im;
        double r30632 = re;
        double r30633 = atan2(r30631, r30632);
        double r30634 = base;
        double r30635 = log(r30634);
        double r30636 = r30633 * r30635;
        double r30637 = r30632 * r30632;
        double r30638 = r30631 * r30631;
        double r30639 = r30637 + r30638;
        double r30640 = sqrt(r30639);
        double r30641 = log(r30640);
        double r30642 = 0.0;
        double r30643 = r30641 * r30642;
        double r30644 = r30636 - r30643;
        double r30645 = r30635 * r30635;
        double r30646 = r30642 * r30642;
        double r30647 = r30645 + r30646;
        double r30648 = r30644 / r30647;
        return r30648;
}

double f(double re, double im, double base) {
        double r30649 = im;
        double r30650 = re;
        double r30651 = atan2(r30649, r30650);
        double r30652 = base;
        double r30653 = log(r30652);
        double r30654 = r30651 / r30653;
        return r30654;
}

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

    \[\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 div-inv0.4

    \[\leadsto \color{blue}{\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}}\]
  5. Using strategy rm
  6. Applied *-un-lft-identity0.4

    \[\leadsto \color{blue}{\left(1 \cdot \tan^{-1}_* \frac{im}{re}\right)} \cdot \frac{1}{\log base}\]
  7. Applied associate-*l*0.4

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

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

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

Reproduce

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