Average Error: 33.4 → 8.9
Time: 10.8s
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 -1.366350780039598033024656614786707109488 \cdot 10^{-5}:\\ \;\;\;\;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\\ \mathbf{elif}\;x.re \le -2.98840525710697803331839831751417796197 \cdot 10^{-83}:\\ \;\;\;\;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 -2.465065284575140403286728326042788472823 \cdot 10^{-250}:\\ \;\;\;\;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\\ \mathbf{elif}\;x.re \le 2.274919071500203404023671068039559061582 \cdot 10^{-253}:\\ \;\;\;\;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 -1.366350780039598033024656614786707109488 \cdot 10^{-5}:\\
\;\;\;\;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\\

\mathbf{elif}\;x.re \le -2.98840525710697803331839831751417796197 \cdot 10^{-83}:\\
\;\;\;\;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 -2.465065284575140403286728326042788472823 \cdot 10^{-250}:\\
\;\;\;\;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\\

\mathbf{elif}\;x.re \le 2.274919071500203404023671068039559061582 \cdot 10^{-253}:\\
\;\;\;\;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 r24204 = x_re;
        double r24205 = r24204 * r24204;
        double r24206 = x_im;
        double r24207 = r24206 * r24206;
        double r24208 = r24205 + r24207;
        double r24209 = sqrt(r24208);
        double r24210 = log(r24209);
        double r24211 = y_re;
        double r24212 = r24210 * r24211;
        double r24213 = atan2(r24206, r24204);
        double r24214 = y_im;
        double r24215 = r24213 * r24214;
        double r24216 = r24212 - r24215;
        double r24217 = exp(r24216);
        double r24218 = r24210 * r24214;
        double r24219 = r24213 * r24211;
        double r24220 = r24218 + r24219;
        double r24221 = cos(r24220);
        double r24222 = r24217 * r24221;
        return r24222;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r24223 = x_re;
        double r24224 = -1.366350780039598e-05;
        bool r24225 = r24223 <= r24224;
        double r24226 = x_im;
        double r24227 = atan2(r24226, r24223);
        double r24228 = y_im;
        double r24229 = r24227 * r24228;
        double r24230 = y_re;
        double r24231 = -1.0;
        double r24232 = r24231 / r24223;
        double r24233 = log(r24232);
        double r24234 = r24230 * r24233;
        double r24235 = r24229 + r24234;
        double r24236 = -r24235;
        double r24237 = exp(r24236);
        double r24238 = 1.0;
        double r24239 = r24237 * r24238;
        double r24240 = -2.988405257106978e-83;
        bool r24241 = r24223 <= r24240;
        double r24242 = r24223 * r24223;
        double r24243 = r24226 * r24226;
        double r24244 = r24242 + r24243;
        double r24245 = sqrt(r24244);
        double r24246 = log(r24245);
        double r24247 = r24246 * r24230;
        double r24248 = r24247 - r24229;
        double r24249 = exp(r24248);
        double r24250 = r24249 * r24238;
        double r24251 = -2.4650652845751404e-250;
        bool r24252 = r24223 <= r24251;
        double r24253 = 2.2749190715002034e-253;
        bool r24254 = r24223 <= r24253;
        double r24255 = log(r24223);
        double r24256 = r24255 * r24230;
        double r24257 = r24256 - r24229;
        double r24258 = exp(r24257);
        double r24259 = r24258 * r24238;
        double r24260 = r24254 ? r24250 : r24259;
        double r24261 = r24252 ? r24239 : r24260;
        double r24262 = r24241 ? r24250 : r24261;
        double r24263 = r24225 ? r24239 : r24262;
        return r24263;
}

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 < -1.366350780039598e-05 or -2.988405257106978e-83 < x.re < -2.4650652845751404e-250

    1. Initial program 34.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 19.4

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

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

    if -1.366350780039598e-05 < x.re < -2.988405257106978e-83 or -2.4650652845751404e-250 < x.re < 2.2749190715002034e-253

    1. Initial program 24.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 12.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}\]

    if 2.2749190715002034e-253 < x.re

    1. Initial program 35.4

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

      \[\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 simplification8.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;x.re \le -1.366350780039598033024656614786707109488 \cdot 10^{-5}:\\ \;\;\;\;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\\ \mathbf{elif}\;x.re \le -2.98840525710697803331839831751417796197 \cdot 10^{-83}:\\ \;\;\;\;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 -2.465065284575140403286728326042788472823 \cdot 10^{-250}:\\ \;\;\;\;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\\ \mathbf{elif}\;x.re \le 2.274919071500203404023671068039559061582 \cdot 10^{-253}:\\ \;\;\;\;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 2019318 
(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)))))