Average Error: 32.8 → 25.9
Time: 35.9s
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 \sin \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)\]
\[\begin{array}{l} \mathbf{if}\;x.im \le -2.5472724614357004 \cdot 10^{-19}:\\ \;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + y.im \cdot \log \left(-x.re\right)\right)\\ \mathbf{elif}\;x.im \le 1.4263058830387834 \cdot 10^{-245}:\\ \;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + y.im \cdot \log \left(\sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}} \cdot \left(\sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}} \cdot \sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}}\right)\right)\right)\\ \mathbf{elif}\;x.im \le 5.3514152020060203 \cdot 10^{-79}:\\ \;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) - \left(\left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\right)\right)} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + \log x.im \cdot y.im\right)\\ \mathbf{elif}\;x.im \le 1.544354402853649 \cdot 10^{-16}:\\ \;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + y.im \cdot \log \left(\sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}} \cdot \left(\sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}} \cdot \sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}}\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;e^{y.re \cdot \log x.im - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + \log x.im \cdot y.im\right)\\ \end{array}\]
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 \sin \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)
\begin{array}{l}
\mathbf{if}\;x.im \le -2.5472724614357004 \cdot 10^{-19}:\\
\;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + y.im \cdot \log \left(-x.re\right)\right)\\

\mathbf{elif}\;x.im \le 1.4263058830387834 \cdot 10^{-245}:\\
\;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + y.im \cdot \log \left(\sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}} \cdot \left(\sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}} \cdot \sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}}\right)\right)\right)\\

\mathbf{elif}\;x.im \le 5.3514152020060203 \cdot 10^{-79}:\\
\;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) - \left(\left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\right)\right)} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + \log x.im \cdot y.im\right)\\

\mathbf{elif}\;x.im \le 1.544354402853649 \cdot 10^{-16}:\\
\;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + y.im \cdot \log \left(\sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}} \cdot \left(\sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}} \cdot \sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}}\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;e^{y.re \cdot \log x.im - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + \log x.im \cdot y.im\right)\\

\end{array}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r978562 = x_re;
        double r978563 = r978562 * r978562;
        double r978564 = x_im;
        double r978565 = r978564 * r978564;
        double r978566 = r978563 + r978565;
        double r978567 = sqrt(r978566);
        double r978568 = log(r978567);
        double r978569 = y_re;
        double r978570 = r978568 * r978569;
        double r978571 = atan2(r978564, r978562);
        double r978572 = y_im;
        double r978573 = r978571 * r978572;
        double r978574 = r978570 - r978573;
        double r978575 = exp(r978574);
        double r978576 = r978568 * r978572;
        double r978577 = r978571 * r978569;
        double r978578 = r978576 + r978577;
        double r978579 = sin(r978578);
        double r978580 = r978575 * r978579;
        return r978580;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r978581 = x_im;
        double r978582 = -2.5472724614357004e-19;
        bool r978583 = r978581 <= r978582;
        double r978584 = y_re;
        double r978585 = r978581 * r978581;
        double r978586 = x_re;
        double r978587 = r978586 * r978586;
        double r978588 = r978585 + r978587;
        double r978589 = sqrt(r978588);
        double r978590 = log(r978589);
        double r978591 = r978584 * r978590;
        double r978592 = atan2(r978581, r978586);
        double r978593 = y_im;
        double r978594 = r978592 * r978593;
        double r978595 = r978591 - r978594;
        double r978596 = exp(r978595);
        double r978597 = r978592 * r978584;
        double r978598 = -r978586;
        double r978599 = log(r978598);
        double r978600 = r978593 * r978599;
        double r978601 = r978597 + r978600;
        double r978602 = sin(r978601);
        double r978603 = r978596 * r978602;
        double r978604 = 1.4263058830387834e-245;
        bool r978605 = r978581 <= r978604;
        double r978606 = cbrt(r978589);
        double r978607 = r978606 * r978606;
        double r978608 = r978606 * r978607;
        double r978609 = log(r978608);
        double r978610 = r978593 * r978609;
        double r978611 = r978597 + r978610;
        double r978612 = sin(r978611);
        double r978613 = r978596 * r978612;
        double r978614 = 5.3514152020060203e-79;
        bool r978615 = r978581 <= r978614;
        double r978616 = /* ERROR: no posit support in C */;
        double r978617 = /* ERROR: no posit support in C */;
        double r978618 = r978591 - r978617;
        double r978619 = exp(r978618);
        double r978620 = log(r978581);
        double r978621 = r978620 * r978593;
        double r978622 = r978597 + r978621;
        double r978623 = sin(r978622);
        double r978624 = r978619 * r978623;
        double r978625 = 1.544354402853649e-16;
        bool r978626 = r978581 <= r978625;
        double r978627 = r978584 * r978620;
        double r978628 = r978627 - r978594;
        double r978629 = exp(r978628);
        double r978630 = r978629 * r978623;
        double r978631 = r978626 ? r978613 : r978630;
        double r978632 = r978615 ? r978624 : r978631;
        double r978633 = r978605 ? r978613 : r978632;
        double r978634 = r978583 ? r978603 : r978633;
        return r978634;
}

Error

Bits error versus x.re

Bits error versus x.im

Bits error versus y.re

Bits error versus y.im

Derivation

  1. Split input into 4 regimes
  2. if x.im < -2.5472724614357004e-19

    1. Initial program 38.1

      \[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 \sin \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 -inf 43.1

      \[\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 \sin \left(\log \color{blue}{\left(-1 \cdot x.re\right)} \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
    3. Simplified43.1

      \[\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 \sin \left(\log \color{blue}{\left(-x.re\right)} \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]

    if -2.5472724614357004e-19 < x.im < 1.4263058830387834e-245 or 5.3514152020060203e-79 < x.im < 1.544354402853649e-16

    1. Initial program 27.1

      \[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 \sin \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. Using strategy rm
    3. Applied add-cube-cbrt27.1

      \[\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 \sin \left(\log \color{blue}{\left(\left(\sqrt[3]{\sqrt{x.re \cdot x.re + x.im \cdot x.im}} \cdot \sqrt[3]{\sqrt{x.re \cdot x.re + x.im \cdot x.im}}\right) \cdot \sqrt[3]{\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)\]

    if 1.4263058830387834e-245 < x.im < 5.3514152020060203e-79

    1. Initial program 27.1

      \[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 \sin \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 23.7

      \[\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 \sin \left(\log \color{blue}{x.im} \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
    3. Using strategy rm
    4. Applied insert-posit1627.1

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

    if 1.544354402853649e-16 < x.im

    1. Initial program 38.2

      \[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 \sin \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 22.0

      \[\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 \sin \left(\log \color{blue}{x.im} \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
    3. Taylor expanded around 0 5.8

      \[\leadsto e^{\log \color{blue}{x.im} \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log x.im \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
  3. Recombined 4 regimes into one program.
  4. Final simplification25.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;x.im \le -2.5472724614357004 \cdot 10^{-19}:\\ \;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + y.im \cdot \log \left(-x.re\right)\right)\\ \mathbf{elif}\;x.im \le 1.4263058830387834 \cdot 10^{-245}:\\ \;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + y.im \cdot \log \left(\sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}} \cdot \left(\sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}} \cdot \sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}}\right)\right)\right)\\ \mathbf{elif}\;x.im \le 5.3514152020060203 \cdot 10^{-79}:\\ \;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) - \left(\left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\right)\right)} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + \log x.im \cdot y.im\right)\\ \mathbf{elif}\;x.im \le 1.544354402853649 \cdot 10^{-16}:\\ \;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + y.im \cdot \log \left(\sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}} \cdot \left(\sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}} \cdot \sqrt[3]{\sqrt{x.im \cdot x.im + x.re \cdot x.re}}\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;e^{y.re \cdot \log x.im - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + \log x.im \cdot y.im\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019146 
(FPCore (x.re x.im y.re y.im)
  :name "powComplex, imaginary part"
  (* (exp (- (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) (* (atan2 x.im x.re) y.im))) (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))))