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.333413978679484291411721441128121739411 \cdot 10^{-11}:\\
\;\;\;\;\frac{\sqrt{e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}}{{\left(\sqrt[3]{\frac{-1}{x.re}} \cdot \sqrt[3]{\frac{-1}{x.re}}\right)}^{y.re}} \cdot \frac{\sqrt{e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}}{{\left(\sqrt[3]{\frac{-1}{x.re}}\right)}^{y.re}}\\
\mathbf{elif}\;x.re \le -1.7597595967955697899862524366054126632 \cdot 10^{-130}:\\
\;\;\;\;\left(\sqrt[3]{\frac{{\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 \sqrt[3]{\frac{{\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}}}\right) \cdot \sqrt[3]{\frac{{\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}}}\\
\mathbf{elif}\;x.re \le -1.496550506260112750208681223280832003923 \cdot 10^{-235}:\\
\;\;\;\;\frac{\sqrt{e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}}{{\left(\sqrt[3]{\frac{-1}{x.re}} \cdot \sqrt[3]{\frac{-1}{x.re}}\right)}^{y.re}} \cdot \frac{\sqrt{e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}}{{\left(\sqrt[3]{\frac{-1}{x.re}}\right)}^{y.re}}\\
\mathbf{elif}\;x.re \le -3.11880136992072568735074703758730827833 \cdot 10^{-271}:\\
\;\;\;\;\left(\sqrt[3]{\frac{{\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 \sqrt[3]{\frac{{\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}}}\right) \cdot \sqrt[3]{\frac{{\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}}}\\
\mathbf{elif}\;x.re \le -1.295559869530605943313641336988999330937 \cdot 10^{-310}:\\
\;\;\;\;\frac{\sqrt{e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}}{{\left(\sqrt[3]{\frac{-1}{x.re}} \cdot \sqrt[3]{\frac{-1}{x.re}}\right)}^{y.re}} \cdot \frac{\sqrt{e^{-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}}{{\left(\sqrt[3]{\frac{-1}{x.re}}\right)}^{y.re}}\\
\mathbf{elif}\;x.re \le 1.205799840270675840371277195994203367027 \cdot 10^{-200} \lor \neg \left(x.re \le 1.346727696157754127498599035215473163681 \cdot 10^{-171}\right):\\
\;\;\;\;e^{\left(-\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\right) + y.re \cdot \log x.re}\\
\mathbf{else}:\\
\;\;\;\;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 x.im \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r24586 = x_re;
double r24587 = r24586 * r24586;
double r24588 = x_im;
double r24589 = r24588 * r24588;
double r24590 = r24587 + r24589;
double r24591 = sqrt(r24590);
double r24592 = log(r24591);
double r24593 = y_re;
double r24594 = r24592 * r24593;
double r24595 = atan2(r24588, r24586);
double r24596 = y_im;
double r24597 = r24595 * r24596;
double r24598 = r24594 - r24597;
double r24599 = exp(r24598);
double r24600 = r24592 * r24596;
double r24601 = r24595 * r24593;
double r24602 = r24600 + r24601;
double r24603 = cos(r24602);
double r24604 = r24599 * r24603;
return r24604;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r24605 = x_re;
double r24606 = -1.3334139786794843e-11;
bool r24607 = r24605 <= r24606;
double r24608 = x_im;
double r24609 = atan2(r24608, r24605);
double r24610 = y_im;
double r24611 = r24609 * r24610;
double r24612 = -r24611;
double r24613 = exp(r24612);
double r24614 = sqrt(r24613);
double r24615 = -1.0;
double r24616 = r24615 / r24605;
double r24617 = cbrt(r24616);
double r24618 = r24617 * r24617;
double r24619 = y_re;
double r24620 = pow(r24618, r24619);
double r24621 = r24614 / r24620;
double r24622 = pow(r24617, r24619);
double r24623 = r24614 / r24622;
double r24624 = r24621 * r24623;
double r24625 = -1.7597595967955698e-130;
bool r24626 = r24605 <= r24625;
double r24627 = r24605 * r24605;
double r24628 = r24608 * r24608;
double r24629 = r24627 + r24628;
double r24630 = sqrt(r24629);
double r24631 = pow(r24630, r24619);
double r24632 = exp(r24611);
double r24633 = r24631 / r24632;
double r24634 = cbrt(r24633);
double r24635 = r24634 * r24634;
double r24636 = r24635 * r24634;
double r24637 = -1.4965505062601128e-235;
bool r24638 = r24605 <= r24637;
double r24639 = -3.1188013699207257e-271;
bool r24640 = r24605 <= r24639;
double r24641 = -1.2955598695306e-310;
bool r24642 = r24605 <= r24641;
double r24643 = 1.2057998402706758e-200;
bool r24644 = r24605 <= r24643;
double r24645 = 1.3467276961577541e-171;
bool r24646 = r24605 <= r24645;
double r24647 = !r24646;
bool r24648 = r24644 || r24647;
double r24649 = log(r24605);
double r24650 = r24619 * r24649;
double r24651 = r24612 + r24650;
double r24652 = exp(r24651);
double r24653 = log(r24630);
double r24654 = r24653 * r24619;
double r24655 = r24654 - r24611;
double r24656 = exp(r24655);
double r24657 = log(r24608);
double r24658 = r24657 * r24610;
double r24659 = r24609 * r24619;
double r24660 = r24658 + r24659;
double r24661 = cos(r24660);
double r24662 = r24656 * r24661;
double r24663 = r24648 ? r24652 : r24662;
double r24664 = r24642 ? r24624 : r24663;
double r24665 = r24640 ? r24636 : r24664;
double r24666 = r24638 ? r24624 : r24665;
double r24667 = r24626 ? r24636 : r24666;
double r24668 = r24607 ? r24624 : r24667;
return r24668;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if x.re < -1.3334139786794843e-11 or -1.7597595967955698e-130 < x.re < -1.4965505062601128e-235 or -3.1188013699207257e-271 < x.re < -1.2955598695306e-310Initial program 36.2
Taylor expanded around 0 19.7
Taylor expanded around -inf 4.5
Simplified10.6
rmApplied add-cube-cbrt10.6
Applied unpow-prod-down10.6
Applied add-sqr-sqrt10.6
Applied times-frac10.6
if -1.3334139786794843e-11 < x.re < -1.7597595967955698e-130 or -1.4965505062601128e-235 < x.re < -3.1188013699207257e-271Initial program 18.8
Taylor expanded around 0 11.0
rmApplied add-cube-cbrt11.0
Simplified16.0
Simplified16.0
if -1.2955598695306e-310 < x.re < 1.2057998402706758e-200 or 1.3467276961577541e-171 < x.re Initial program 34.2
Taylor expanded around 0 21.7
Taylor expanded around inf 11.6
Simplified11.6
if 1.2057998402706758e-200 < x.re < 1.3467276961577541e-171Initial program 30.8
Taylor expanded around 0 37.8
Final simplification12.5
herbie shell --seed 2019208
(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)))))