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}\;y.re \le -3.079284281175841:\\
\;\;\;\;e^{\log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}\\
\mathbf{else}:\\
\;\;\;\;e^{y.re \cdot \log \left(-x.re\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r927592 = x_re;
double r927593 = r927592 * r927592;
double r927594 = x_im;
double r927595 = r927594 * r927594;
double r927596 = r927593 + r927595;
double r927597 = sqrt(r927596);
double r927598 = log(r927597);
double r927599 = y_re;
double r927600 = r927598 * r927599;
double r927601 = atan2(r927594, r927592);
double r927602 = y_im;
double r927603 = r927601 * r927602;
double r927604 = r927600 - r927603;
double r927605 = exp(r927604);
double r927606 = r927598 * r927602;
double r927607 = r927601 * r927599;
double r927608 = r927606 + r927607;
double r927609 = cos(r927608);
double r927610 = r927605 * r927609;
return r927610;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r927611 = y_re;
double r927612 = -3.079284281175841;
bool r927613 = r927611 <= r927612;
double r927614 = x_im;
double r927615 = r927614 * r927614;
double r927616 = x_re;
double r927617 = r927616 * r927616;
double r927618 = r927615 + r927617;
double r927619 = sqrt(r927618);
double r927620 = log(r927619);
double r927621 = r927620 * r927611;
double r927622 = atan2(r927614, r927616);
double r927623 = y_im;
double r927624 = r927622 * r927623;
double r927625 = r927621 - r927624;
double r927626 = exp(r927625);
double r927627 = -r927616;
double r927628 = log(r927627);
double r927629 = r927611 * r927628;
double r927630 = r927629 - r927624;
double r927631 = exp(r927630);
double r927632 = r927613 ? r927626 : r927631;
return r927632;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if y.re < -3.079284281175841Initial program 36.1
Taylor expanded around 0 0
if -3.079284281175841 < y.re Initial program 27.9
Taylor expanded around 0 25.5
Taylor expanded around -inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019138
(FPCore (x.re x.im y.re y.im)
:name "powComplex, real part"
(* (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)))))