Average Error: 31.0 → 0
Time: 2.4m
Precision: 64
\[e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \cos \left(\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
\[e^{\log \left(\sqrt{x.re^2 + x.im^2}^*\right) \cdot y.re - y.im \cdot \tan^{-1}_* \frac{x.im}{x.re}}\]
double f(double x_re, double x_im, double y_re, double y_im) {
        double r574676 = x_re;
        double r574677 = r574676 * r574676;
        double r574678 = x_im;
        double r574679 = r574678 * r574678;
        double r574680 = r574677 + r574679;
        double r574681 = sqrt(r574680);
        double r574682 = log(r574681);
        double r574683 = y_re;
        double r574684 = r574682 * r574683;
        double r574685 = atan2(r574678, r574676);
        double r574686 = y_im;
        double r574687 = r574685 * r574686;
        double r574688 = r574684 - r574687;
        double r574689 = exp(r574688);
        double r574690 = r574682 * r574686;
        double r574691 = r574685 * r574683;
        double r574692 = r574690 + r574691;
        double r574693 = cos(r574692);
        double r574694 = r574689 * r574693;
        return r574694;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r574695 = x_re;
        double r574696 = x_im;
        double r574697 = hypot(r574695, r574696);
        double r574698 = log(r574697);
        double r574699 = y_re;
        double r574700 = r574698 * r574699;
        double r574701 = y_im;
        double r574702 = atan2(r574696, r574695);
        double r574703 = r574701 * r574702;
        double r574704 = r574700 - r574703;
        double r574705 = exp(r574704);
        return r574705;
}

e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \cos \left(\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)
e^{\log \left(\sqrt{x.re^2 + x.im^2}^*\right) \cdot y.re - y.im \cdot \tan^{-1}_* \frac{x.im}{x.re}}

Error

Bits error versus x.re

Bits error versus x.im

Bits error versus y.re

Bits error versus y.im

Derivation

  1. Initial program 31.0

    \[e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \cos \left(\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
  2. Taylor expanded around 0 17.2

    \[\leadsto e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \color{blue}{1}\]
  3. Using strategy rm
  4. Applied hypot-def0

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

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

Reproduce

herbie shell --seed 2019101 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
  :name "powComplex, real part"
  (* (exp (- (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) (* (atan2 x.im x.re) y.im))) (cos (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))))