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 7.7747768769685 \cdot 10^{-312}:\\
\;\;\;\;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(-1 \cdot x.re\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\\
\mathbf{elif}\;x.re \le 4.35620541367004009 \cdot 10^{34}:\\
\;\;\;\;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 x.re \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\\
\mathbf{else}:\\
\;\;\;\;e^{\left(\log x.re \cdot \left(\sqrt[3]{y.re} \cdot \sqrt[3]{y.re}\right)\right) \cdot \sqrt[3]{y.re} - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log x.re \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 r15451 = x_re;
double r15452 = r15451 * r15451;
double r15453 = x_im;
double r15454 = r15453 * r15453;
double r15455 = r15452 + r15454;
double r15456 = sqrt(r15455);
double r15457 = log(r15456);
double r15458 = y_re;
double r15459 = r15457 * r15458;
double r15460 = atan2(r15453, r15451);
double r15461 = y_im;
double r15462 = r15460 * r15461;
double r15463 = r15459 - r15462;
double r15464 = exp(r15463);
double r15465 = r15457 * r15461;
double r15466 = r15460 * r15458;
double r15467 = r15465 + r15466;
double r15468 = sin(r15467);
double r15469 = r15464 * r15468;
return r15469;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r15470 = x_re;
double r15471 = 7.7747768769685e-312;
bool r15472 = r15470 <= r15471;
double r15473 = r15470 * r15470;
double r15474 = x_im;
double r15475 = r15474 * r15474;
double r15476 = r15473 + r15475;
double r15477 = sqrt(r15476);
double r15478 = log(r15477);
double r15479 = y_re;
double r15480 = r15478 * r15479;
double r15481 = atan2(r15474, r15470);
double r15482 = y_im;
double r15483 = r15481 * r15482;
double r15484 = r15480 - r15483;
double r15485 = exp(r15484);
double r15486 = -1.0;
double r15487 = r15486 * r15470;
double r15488 = log(r15487);
double r15489 = r15488 * r15482;
double r15490 = r15481 * r15479;
double r15491 = r15489 + r15490;
double r15492 = sin(r15491);
double r15493 = r15485 * r15492;
double r15494 = 4.35620541367004e+34;
bool r15495 = r15470 <= r15494;
double r15496 = log(r15470);
double r15497 = r15496 * r15482;
double r15498 = r15497 + r15490;
double r15499 = sin(r15498);
double r15500 = r15485 * r15499;
double r15501 = cbrt(r15479);
double r15502 = r15501 * r15501;
double r15503 = r15496 * r15502;
double r15504 = r15503 * r15501;
double r15505 = r15504 - r15483;
double r15506 = exp(r15505);
double r15507 = r15506 * r15499;
double r15508 = r15495 ? r15500 : r15507;
double r15509 = r15472 ? r15493 : r15508;
return r15509;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if x.re < 7.7747768769685e-312Initial program 31.3
Taylor expanded around -inf 19.7
if 7.7747768769685e-312 < x.re < 4.35620541367004e+34Initial program 24.3
Taylor expanded around inf 19.9
if 4.35620541367004e+34 < x.re Initial program 46.6
Taylor expanded around inf 28.9
Taylor expanded around inf 12.5
rmApplied add-cube-cbrt12.5
Applied associate-*r*12.5
Final simplification18.0
herbie shell --seed 2020064
(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)))))