Average Error: 31.7 → 0.3
Time: 4.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{\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 r38630 = im;
        double r38631 = re;
        double r38632 = atan2(r38630, r38631);
        double r38633 = base;
        double r38634 = log(r38633);
        double r38635 = r38632 * r38634;
        double r38636 = r38631 * r38631;
        double r38637 = r38630 * r38630;
        double r38638 = r38636 + r38637;
        double r38639 = sqrt(r38638);
        double r38640 = log(r38639);
        double r38641 = 0.0;
        double r38642 = r38640 * r38641;
        double r38643 = r38635 - r38642;
        double r38644 = r38634 * r38634;
        double r38645 = r38641 * r38641;
        double r38646 = r38644 + r38645;
        double r38647 = r38643 / r38646;
        return r38647;
}

double f(double re, double im, double base) {
        double r38648 = im;
        double r38649 = re;
        double r38650 = atan2(r38648, r38649);
        double r38651 = base;
        double r38652 = log(r38651);
        double r38653 = r38650 / r38652;
        return r38653;
}

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

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

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

    \[\leadsto \color{blue}{{\left(\tan^{-1}_* \frac{im}{re}\right)}^{1}} \cdot {\left(\frac{1}{\log base}\right)}^{1}\]
  8. Applied pow-prod-down0.4

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

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

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

Reproduce

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