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 \sin \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.197440871000797137827287021764707966827 \cdot 10^{-310}:\\
\;\;\;\;e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \left(\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}} \cdot \sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}\right) \cdot \left(\left(\left(\sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}} \cdot \sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}}\right) \cdot \sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}}\right) \cdot y.im\right)} \cdot \sin \left(\log \left(-1 \cdot x.re\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\\
\mathbf{else}:\\
\;\;\;\;e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \left(\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}} \cdot \sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}\right) \cdot \left(\left(\left(\sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}} \cdot \sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}}\right) \cdot \sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}}\right) \cdot y.im\right)} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re - y.im \cdot \log \left(\frac{1}{x.re}\right)\right)\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r17573 = x_re;
double r17574 = r17573 * r17573;
double r17575 = x_im;
double r17576 = r17575 * r17575;
double r17577 = r17574 + r17576;
double r17578 = sqrt(r17577);
double r17579 = log(r17578);
double r17580 = y_re;
double r17581 = r17579 * r17580;
double r17582 = atan2(r17575, r17573);
double r17583 = y_im;
double r17584 = r17582 * r17583;
double r17585 = r17581 - r17584;
double r17586 = exp(r17585);
double r17587 = r17579 * r17583;
double r17588 = r17582 * r17580;
double r17589 = r17587 + r17588;
double r17590 = sin(r17589);
double r17591 = r17586 * r17590;
return r17591;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r17592 = x_re;
double r17593 = -1.1974408710008e-310;
bool r17594 = r17592 <= r17593;
double r17595 = r17592 * r17592;
double r17596 = x_im;
double r17597 = r17596 * r17596;
double r17598 = r17595 + r17597;
double r17599 = sqrt(r17598);
double r17600 = log(r17599);
double r17601 = y_re;
double r17602 = r17600 * r17601;
double r17603 = atan2(r17596, r17592);
double r17604 = cbrt(r17603);
double r17605 = r17604 * r17604;
double r17606 = cbrt(r17604);
double r17607 = r17606 * r17606;
double r17608 = r17607 * r17606;
double r17609 = y_im;
double r17610 = r17608 * r17609;
double r17611 = r17605 * r17610;
double r17612 = r17602 - r17611;
double r17613 = exp(r17612);
double r17614 = -1.0;
double r17615 = r17614 * r17592;
double r17616 = log(r17615);
double r17617 = r17616 * r17609;
double r17618 = r17603 * r17601;
double r17619 = r17617 + r17618;
double r17620 = sin(r17619);
double r17621 = r17613 * r17620;
double r17622 = 1.0;
double r17623 = r17622 / r17592;
double r17624 = log(r17623);
double r17625 = r17609 * r17624;
double r17626 = r17618 - r17625;
double r17627 = sin(r17626);
double r17628 = r17613 * r17627;
double r17629 = r17594 ? r17621 : r17628;
return r17629;
}



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.1974408710008e-310Initial program 32.2
rmApplied add-cube-cbrt32.2
Applied associate-*l*32.2
rmApplied add-cube-cbrt32.2
Taylor expanded around -inf 21.3
if -1.1974408710008e-310 < x.re Initial program 34.0
rmApplied add-cube-cbrt34.0
Applied associate-*l*34.0
rmApplied add-cube-cbrt34.0
Taylor expanded around inf 24.0
Final simplification22.7
herbie shell --seed 2020001
(FPCore (x.re x.im y.re y.im)
:name "powComplex, imaginary part"
:precision binary64
(* (exp (- (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) (* (atan2 x.im x.re) y.im))) (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))))