Average Error: 32.8 → 4.0
Time: 7.5s
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^{\left(\left(\sqrt[3]{y.re} \cdot \left(\left(\sqrt[3]{\sqrt[3]{y.re}} \cdot \sqrt[3]{\sqrt[3]{y.re}}\right) \cdot \sqrt[3]{\sqrt[3]{y.re}}\right)\right) \cdot \left(1 \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)\right)\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{y.re}} \cdot \sqrt[3]{\sqrt[3]{y.re}}\right) \cdot \sqrt[3]{\sqrt[3]{y.re}}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}\]
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^{\left(\left(\sqrt[3]{y.re} \cdot \left(\left(\sqrt[3]{\sqrt[3]{y.re}} \cdot \sqrt[3]{\sqrt[3]{y.re}}\right) \cdot \sqrt[3]{\sqrt[3]{y.re}}\right)\right) \cdot \left(1 \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)\right)\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{y.re}} \cdot \sqrt[3]{\sqrt[3]{y.re}}\right) \cdot \sqrt[3]{\sqrt[3]{y.re}}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r18566 = x_re;
        double r18567 = r18566 * r18566;
        double r18568 = x_im;
        double r18569 = r18568 * r18568;
        double r18570 = r18567 + r18569;
        double r18571 = sqrt(r18570);
        double r18572 = log(r18571);
        double r18573 = y_re;
        double r18574 = r18572 * r18573;
        double r18575 = atan2(r18568, r18566);
        double r18576 = y_im;
        double r18577 = r18575 * r18576;
        double r18578 = r18574 - r18577;
        double r18579 = exp(r18578);
        double r18580 = r18572 * r18576;
        double r18581 = r18575 * r18573;
        double r18582 = r18580 + r18581;
        double r18583 = cos(r18582);
        double r18584 = r18579 * r18583;
        return r18584;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r18585 = y_re;
        double r18586 = cbrt(r18585);
        double r18587 = cbrt(r18586);
        double r18588 = r18587 * r18587;
        double r18589 = r18588 * r18587;
        double r18590 = r18586 * r18589;
        double r18591 = 1.0;
        double r18592 = x_re;
        double r18593 = x_im;
        double r18594 = hypot(r18592, r18593);
        double r18595 = log(r18594);
        double r18596 = r18591 * r18595;
        double r18597 = r18590 * r18596;
        double r18598 = r18597 * r18589;
        double r18599 = atan2(r18593, r18592);
        double r18600 = y_im;
        double r18601 = r18599 * r18600;
        double r18602 = r18598 - r18601;
        double r18603 = exp(r18602);
        return r18603;
}

Error

Bits error versus x.re

Bits error versus x.im

Bits error versus y.re

Bits error versus y.im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 32.8

    \[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 19.5

    \[\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 add-cube-cbrt19.5

    \[\leadsto e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot \color{blue}{\left(\left(\sqrt[3]{y.re} \cdot \sqrt[3]{y.re}\right) \cdot \sqrt[3]{y.re}\right)} - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\]
  5. Applied associate-*r*19.5

    \[\leadsto e^{\color{blue}{\left(\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot \left(\sqrt[3]{y.re} \cdot \sqrt[3]{y.re}\right)\right) \cdot \sqrt[3]{y.re}} - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\]
  6. Simplified4.0

    \[\leadsto e^{\color{blue}{\left(\left(\sqrt[3]{y.re} \cdot \sqrt[3]{y.re}\right) \cdot \left(1 \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)\right)\right)} \cdot \sqrt[3]{y.re} - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\]
  7. Using strategy rm
  8. Applied add-cube-cbrt4.0

    \[\leadsto e^{\left(\left(\sqrt[3]{y.re} \cdot \color{blue}{\left(\left(\sqrt[3]{\sqrt[3]{y.re}} \cdot \sqrt[3]{\sqrt[3]{y.re}}\right) \cdot \sqrt[3]{\sqrt[3]{y.re}}\right)}\right) \cdot \left(1 \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)\right)\right) \cdot \sqrt[3]{y.re} - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\]
  9. Using strategy rm
  10. Applied add-cube-cbrt4.0

    \[\leadsto e^{\left(\left(\sqrt[3]{y.re} \cdot \left(\left(\sqrt[3]{\sqrt[3]{y.re}} \cdot \sqrt[3]{\sqrt[3]{y.re}}\right) \cdot \sqrt[3]{\sqrt[3]{y.re}}\right)\right) \cdot \left(1 \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)\right)\right) \cdot \color{blue}{\left(\left(\sqrt[3]{\sqrt[3]{y.re}} \cdot \sqrt[3]{\sqrt[3]{y.re}}\right) \cdot \sqrt[3]{\sqrt[3]{y.re}}\right)} - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\]
  11. Final simplification4.0

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

Reproduce

herbie shell --seed 2019352 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
  :name "powComplex, real part"
  :precision binary64
  (* (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)))))