Average Error: 32.9 → 9.8
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 -502608337644955597407793446912:\\ \;\;\;\;e^{\log \left(-1 \cdot x.re\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\ \mathbf{elif}\;x.re \le -7.648828033871659839819848012863284741258 \cdot 10^{-153}:\\ \;\;\;\;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 -4.396524045590289645323160750057275973793 \cdot 10^{-206}:\\ \;\;\;\;e^{\log \left(-1 \cdot x.re\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\ \mathbf{elif}\;x.re \le 1.532410043993753832903085741348381390706 \cdot 10^{-42}:\\ \;\;\;\;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^{-1 \cdot \left(y.re \cdot \log \left(\frac{1}{x.re}\right)\right) - \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 -502608337644955597407793446912:\\
\;\;\;\;e^{\log \left(-1 \cdot x.re\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\

\mathbf{elif}\;x.re \le -7.648828033871659839819848012863284741258 \cdot 10^{-153}:\\
\;\;\;\;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 -4.396524045590289645323160750057275973793 \cdot 10^{-206}:\\
\;\;\;\;e^{\log \left(-1 \cdot x.re\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\

\mathbf{elif}\;x.re \le 1.532410043993753832903085741348381390706 \cdot 10^{-42}:\\
\;\;\;\;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^{-1 \cdot \left(y.re \cdot \log \left(\frac{1}{x.re}\right)\right) - \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 r12895 = x_re;
        double r12896 = r12895 * r12895;
        double r12897 = x_im;
        double r12898 = r12897 * r12897;
        double r12899 = r12896 + r12898;
        double r12900 = sqrt(r12899);
        double r12901 = log(r12900);
        double r12902 = y_re;
        double r12903 = r12901 * r12902;
        double r12904 = atan2(r12897, r12895);
        double r12905 = y_im;
        double r12906 = r12904 * r12905;
        double r12907 = r12903 - r12906;
        double r12908 = exp(r12907);
        double r12909 = r12901 * r12905;
        double r12910 = r12904 * r12902;
        double r12911 = r12909 + r12910;
        double r12912 = cos(r12911);
        double r12913 = r12908 * r12912;
        return r12913;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r12914 = x_re;
        double r12915 = -5.026083376449556e+29;
        bool r12916 = r12914 <= r12915;
        double r12917 = -1.0;
        double r12918 = r12917 * r12914;
        double r12919 = log(r12918);
        double r12920 = y_re;
        double r12921 = r12919 * r12920;
        double r12922 = x_im;
        double r12923 = atan2(r12922, r12914);
        double r12924 = y_im;
        double r12925 = r12923 * r12924;
        double r12926 = r12921 - r12925;
        double r12927 = exp(r12926);
        double r12928 = 1.0;
        double r12929 = r12927 * r12928;
        double r12930 = -7.64882803387166e-153;
        bool r12931 = r12914 <= r12930;
        double r12932 = r12914 * r12914;
        double r12933 = r12922 * r12922;
        double r12934 = r12932 + r12933;
        double r12935 = sqrt(r12934);
        double r12936 = log(r12935);
        double r12937 = r12936 * r12920;
        double r12938 = r12937 - r12925;
        double r12939 = exp(r12938);
        double r12940 = r12939 * r12928;
        double r12941 = -4.3965240455902896e-206;
        bool r12942 = r12914 <= r12941;
        double r12943 = 1.5324100439937538e-42;
        bool r12944 = r12914 <= r12943;
        double r12945 = r12928 / r12914;
        double r12946 = log(r12945);
        double r12947 = r12920 * r12946;
        double r12948 = r12917 * r12947;
        double r12949 = r12948 - r12925;
        double r12950 = exp(r12949);
        double r12951 = r12950 * r12928;
        double r12952 = r12944 ? r12940 : r12951;
        double r12953 = r12942 ? r12929 : r12952;
        double r12954 = r12931 ? r12940 : r12953;
        double r12955 = r12916 ? r12929 : r12954;
        return r12955;
}

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 < -5.026083376449556e+29 or -7.64882803387166e-153 < x.re < -4.3965240455902896e-206

    1. Initial program 39.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 \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 22.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. Taylor expanded around -inf 2.2

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

    if -5.026083376449556e+29 < x.re < -7.64882803387166e-153 or -4.3965240455902896e-206 < x.re < 1.5324100439937538e-42

    1. Initial program 23.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 13.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}\]

    if 1.5324100439937538e-42 < x.re

    1. Initial program 41.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 27.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 \color{blue}{1}\]
    3. Using strategy rm
    4. Applied exp-diff28.8

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x.re \le -502608337644955597407793446912:\\ \;\;\;\;e^{\log \left(-1 \cdot x.re\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\ \mathbf{elif}\;x.re \le -7.648828033871659839819848012863284741258 \cdot 10^{-153}:\\ \;\;\;\;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 -4.396524045590289645323160750057275973793 \cdot 10^{-206}:\\ \;\;\;\;e^{\log \left(-1 \cdot x.re\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\ \mathbf{elif}\;x.re \le 1.532410043993753832903085741348381390706 \cdot 10^{-42}:\\ \;\;\;\;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^{-1 \cdot \left(y.re \cdot \log \left(\frac{1}{x.re}\right)\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\ \end{array}\]

Reproduce

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