Average Error: 33.0 → 11.2
Time: 8.4s
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 -7.9022398022615509 \cdot 10^{-11}:\\ \;\;\;\;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\\ \mathbf{elif}\;x.re \le -3.92599276721330252 \cdot 10^{-252}:\\ \;\;\;\;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 -5.53876614394108532 \cdot 10^{-295}:\\ \;\;\;\;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\\ \mathbf{elif}\;x.re \le 8.49194308205463702 \cdot 10^{-233}:\\ \;\;\;\;\frac{\frac{e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}{\sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}} \cdot \sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}}}}{\sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}}} \cdot 1\\ \mathbf{elif}\;x.re \le 5.38109684134316772 \cdot 10^{-111}:\\ \;\;\;\;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}:\\ \;\;\;\;\frac{\frac{e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}{\sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}} \cdot \sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}}}}{\sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}}} \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 -7.9022398022615509 \cdot 10^{-11}:\\
\;\;\;\;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\\

\mathbf{elif}\;x.re \le -3.92599276721330252 \cdot 10^{-252}:\\
\;\;\;\;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 -5.53876614394108532 \cdot 10^{-295}:\\
\;\;\;\;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\\

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

\mathbf{elif}\;x.re \le 5.38109684134316772 \cdot 10^{-111}:\\
\;\;\;\;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}:\\
\;\;\;\;\frac{\frac{e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}{\sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}} \cdot \sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}}}}{\sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}}} \cdot 1\\

\end{array}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r17989 = x_re;
        double r17990 = r17989 * r17989;
        double r17991 = x_im;
        double r17992 = r17991 * r17991;
        double r17993 = r17990 + r17992;
        double r17994 = sqrt(r17993);
        double r17995 = log(r17994);
        double r17996 = y_re;
        double r17997 = r17995 * r17996;
        double r17998 = atan2(r17991, r17989);
        double r17999 = y_im;
        double r18000 = r17998 * r17999;
        double r18001 = r17997 - r18000;
        double r18002 = exp(r18001);
        double r18003 = r17995 * r17999;
        double r18004 = r17998 * r17996;
        double r18005 = r18003 + r18004;
        double r18006 = cos(r18005);
        double r18007 = r18002 * r18006;
        return r18007;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r18008 = x_re;
        double r18009 = -7.902239802261551e-11;
        bool r18010 = r18008 <= r18009;
        double r18011 = -1.0;
        double r18012 = y_re;
        double r18013 = r18011 / r18008;
        double r18014 = log(r18013);
        double r18015 = r18012 * r18014;
        double r18016 = r18011 * r18015;
        double r18017 = x_im;
        double r18018 = atan2(r18017, r18008);
        double r18019 = y_im;
        double r18020 = r18018 * r18019;
        double r18021 = r18016 - r18020;
        double r18022 = exp(r18021);
        double r18023 = 1.0;
        double r18024 = r18022 * r18023;
        double r18025 = -3.9259927672133025e-252;
        bool r18026 = r18008 <= r18025;
        double r18027 = r18008 * r18008;
        double r18028 = r18017 * r18017;
        double r18029 = r18027 + r18028;
        double r18030 = sqrt(r18029);
        double r18031 = log(r18030);
        double r18032 = r18031 * r18012;
        double r18033 = r18032 - r18020;
        double r18034 = exp(r18033);
        double r18035 = r18034 * r18023;
        double r18036 = -5.538766143941085e-295;
        bool r18037 = r18008 <= r18036;
        double r18038 = 8.491943082054637e-233;
        bool r18039 = r18008 <= r18038;
        double r18040 = -r18020;
        double r18041 = exp(r18040);
        double r18042 = r18023 / r18008;
        double r18043 = pow(r18042, r18012);
        double r18044 = cbrt(r18043);
        double r18045 = r18044 * r18044;
        double r18046 = r18041 / r18045;
        double r18047 = r18046 / r18044;
        double r18048 = r18047 * r18023;
        double r18049 = 5.381096841343168e-111;
        bool r18050 = r18008 <= r18049;
        double r18051 = r18050 ? r18035 : r18048;
        double r18052 = r18039 ? r18048 : r18051;
        double r18053 = r18037 ? r18024 : r18052;
        double r18054 = r18026 ? r18035 : r18053;
        double r18055 = r18010 ? r18024 : r18054;
        return r18055;
}

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 < -7.902239802261551e-11 or -3.9259927672133025e-252 < x.re < -5.538766143941085e-295

    1. Initial program 37.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 20.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. Taylor expanded around -inf 3.0

      \[\leadsto e^{\color{blue}{-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\]

    if -7.902239802261551e-11 < x.re < -3.9259927672133025e-252 or 8.491943082054637e-233 < x.re < 5.381096841343168e-111

    1. Initial program 23.6

      \[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.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 \color{blue}{1}\]

    if -5.538766143941085e-295 < x.re < 8.491943082054637e-233 or 5.381096841343168e-111 < x.re

    1. Initial program 35.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 21.9

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

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

      \[\leadsto \color{blue}{\frac{e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}{{\left(\frac{1}{x.re}\right)}^{y.re}}} \cdot 1\]
    5. Using strategy rm
    6. Applied add-cube-cbrt14.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x.re \le -7.9022398022615509 \cdot 10^{-11}:\\ \;\;\;\;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\\ \mathbf{elif}\;x.re \le -3.92599276721330252 \cdot 10^{-252}:\\ \;\;\;\;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 -5.53876614394108532 \cdot 10^{-295}:\\ \;\;\;\;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\\ \mathbf{elif}\;x.re \le 8.49194308205463702 \cdot 10^{-233}:\\ \;\;\;\;\frac{\frac{e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}{\sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}} \cdot \sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}}}}{\sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}}} \cdot 1\\ \mathbf{elif}\;x.re \le 5.38109684134316772 \cdot 10^{-111}:\\ \;\;\;\;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}:\\ \;\;\;\;\frac{\frac{e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}{\sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}} \cdot \sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}}}}{\sqrt[3]{{\left(\frac{1}{x.re}\right)}^{y.re}}} \cdot 1\\ \end{array}\]

Reproduce

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