Average Error: 33.3 → 11.3
Time: 7.3s
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)\]
\[\begin{array}{l} \mathbf{if}\;x.re \le -8.512054391915101604480402838143546852923 \cdot 10^{-257}:\\ \;\;\;\;\left({\left(-1 \cdot x.re\right)}^{y.re} \cdot e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}\right) \cdot 1\\ \mathbf{elif}\;x.re \le -2.448562128644886468589051132244914536457 \cdot 10^{-310}:\\ \;\;\;\;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 1\\ \mathbf{elif}\;x.re \le 8.333241630915608797286868021117327942766 \cdot 10^{-157}:\\ \;\;\;\;e^{\log x.re \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\ \mathbf{elif}\;x.re \le 0.0496669033130894138627908773742092307657:\\ \;\;\;\;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 1\\ \mathbf{else}:\\ \;\;\;\;e^{\log x.re \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\ \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 \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)
\begin{array}{l}
\mathbf{if}\;x.re \le -8.512054391915101604480402838143546852923 \cdot 10^{-257}:\\
\;\;\;\;\left({\left(-1 \cdot x.re\right)}^{y.re} \cdot e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}\right) \cdot 1\\

\mathbf{elif}\;x.re \le -2.448562128644886468589051132244914536457 \cdot 10^{-310}:\\
\;\;\;\;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 1\\

\mathbf{elif}\;x.re \le 8.333241630915608797286868021117327942766 \cdot 10^{-157}:\\
\;\;\;\;e^{\log x.re \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\

\mathbf{elif}\;x.re \le 0.0496669033130894138627908773742092307657:\\
\;\;\;\;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 1\\

\mathbf{else}:\\
\;\;\;\;e^{\log x.re \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\

\end{array}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r12932 = x_re;
        double r12933 = r12932 * r12932;
        double r12934 = x_im;
        double r12935 = r12934 * r12934;
        double r12936 = r12933 + r12935;
        double r12937 = sqrt(r12936);
        double r12938 = log(r12937);
        double r12939 = y_re;
        double r12940 = r12938 * r12939;
        double r12941 = atan2(r12934, r12932);
        double r12942 = y_im;
        double r12943 = r12941 * r12942;
        double r12944 = r12940 - r12943;
        double r12945 = exp(r12944);
        double r12946 = r12938 * r12942;
        double r12947 = r12941 * r12939;
        double r12948 = r12946 + r12947;
        double r12949 = cos(r12948);
        double r12950 = r12945 * r12949;
        return r12950;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r12951 = x_re;
        double r12952 = -8.512054391915102e-257;
        bool r12953 = r12951 <= r12952;
        double r12954 = -1.0;
        double r12955 = r12954 * r12951;
        double r12956 = y_re;
        double r12957 = pow(r12955, r12956);
        double r12958 = x_im;
        double r12959 = atan2(r12958, r12951);
        double r12960 = y_im;
        double r12961 = r12959 * r12960;
        double r12962 = -r12961;
        double r12963 = exp(r12962);
        double r12964 = r12957 * r12963;
        double r12965 = 1.0;
        double r12966 = r12964 * r12965;
        double r12967 = -2.4485621286449e-310;
        bool r12968 = r12951 <= r12967;
        double r12969 = r12951 * r12951;
        double r12970 = r12958 * r12958;
        double r12971 = r12969 + r12970;
        double r12972 = sqrt(r12971);
        double r12973 = log(r12972);
        double r12974 = r12973 * r12956;
        double r12975 = r12974 - r12961;
        double r12976 = exp(r12975);
        double r12977 = r12976 * r12965;
        double r12978 = 8.333241630915609e-157;
        bool r12979 = r12951 <= r12978;
        double r12980 = log(r12951);
        double r12981 = r12980 * r12956;
        double r12982 = r12981 - r12961;
        double r12983 = exp(r12982);
        double r12984 = r12983 * r12965;
        double r12985 = 0.049666903313089414;
        bool r12986 = r12951 <= r12985;
        double r12987 = r12986 ? r12977 : r12984;
        double r12988 = r12979 ? r12984 : r12987;
        double r12989 = r12968 ? r12977 : r12988;
        double r12990 = r12953 ? r12966 : r12989;
        return r12990;
}

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. Split input into 3 regimes
  2. if x.re < -8.512054391915102e-257

    1. Initial program 31.9

      \[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.6

      \[\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 sub-neg17.6

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

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

      \[\leadsto \left(\color{blue}{{\left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right)}^{y.re}} \cdot e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}\right) \cdot 1\]
    7. Taylor expanded around -inf 11.1

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

    if -8.512054391915102e-257 < x.re < -2.4485621286449e-310 or 8.333241630915609e-157 < x.re < 0.049666903313089414

    1. Initial program 21.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 12.8

      \[\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}\]

    if -2.4485621286449e-310 < x.re < 8.333241630915609e-157 or 0.049666903313089414 < x.re

    1. Initial program 40.3

      \[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 25.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 \color{blue}{1}\]
    3. Taylor expanded around inf 10.8

      \[\leadsto e^{\log \color{blue}{x.re} \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\]
  3. Recombined 3 regimes into one program.
  4. Final simplification11.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;x.re \le -8.512054391915101604480402838143546852923 \cdot 10^{-257}:\\ \;\;\;\;\left({\left(-1 \cdot x.re\right)}^{y.re} \cdot e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}\right) \cdot 1\\ \mathbf{elif}\;x.re \le -2.448562128644886468589051132244914536457 \cdot 10^{-310}:\\ \;\;\;\;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 1\\ \mathbf{elif}\;x.re \le 8.333241630915608797286868021117327942766 \cdot 10^{-157}:\\ \;\;\;\;e^{\log x.re \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\ \mathbf{elif}\;x.re \le 0.0496669033130894138627908773742092307657:\\ \;\;\;\;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 1\\ \mathbf{else}:\\ \;\;\;\;e^{\log x.re \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\ \end{array}\]

Reproduce

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