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.032654058251619715334674984897269213829 \cdot 10^{-119}:\\
\;\;\;\;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(\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}} \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{elif}\;x.re \le -1.64874575154531529611517726789315317132 \cdot 10^{-258}:\\
\;\;\;\;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(\log \left(e^{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}}\right) \cdot y.im\right)} \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)\\
\mathbf{elif}\;x.re \le -2.596233892654354539209028863972018475258 \cdot 10^{-303}:\\
\;\;\;\;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(\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}} \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(\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}} \cdot y.im\right)} \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 r19491 = x_re;
double r19492 = r19491 * r19491;
double r19493 = x_im;
double r19494 = r19493 * r19493;
double r19495 = r19492 + r19494;
double r19496 = sqrt(r19495);
double r19497 = log(r19496);
double r19498 = y_re;
double r19499 = r19497 * r19498;
double r19500 = atan2(r19493, r19491);
double r19501 = y_im;
double r19502 = r19500 * r19501;
double r19503 = r19499 - r19502;
double r19504 = exp(r19503);
double r19505 = r19497 * r19501;
double r19506 = r19500 * r19498;
double r19507 = r19505 + r19506;
double r19508 = sin(r19507);
double r19509 = r19504 * r19508;
return r19509;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r19510 = x_re;
double r19511 = -1.0326540582516197e-119;
bool r19512 = r19510 <= r19511;
double r19513 = r19510 * r19510;
double r19514 = x_im;
double r19515 = r19514 * r19514;
double r19516 = r19513 + r19515;
double r19517 = sqrt(r19516);
double r19518 = log(r19517);
double r19519 = y_re;
double r19520 = r19518 * r19519;
double r19521 = atan2(r19514, r19510);
double r19522 = cbrt(r19521);
double r19523 = r19522 * r19522;
double r19524 = y_im;
double r19525 = r19522 * r19524;
double r19526 = r19523 * r19525;
double r19527 = r19520 - r19526;
double r19528 = exp(r19527);
double r19529 = -1.0;
double r19530 = r19529 * r19510;
double r19531 = log(r19530);
double r19532 = r19531 * r19524;
double r19533 = r19521 * r19519;
double r19534 = r19532 + r19533;
double r19535 = sin(r19534);
double r19536 = r19528 * r19535;
double r19537 = -1.6487457515453153e-258;
bool r19538 = r19510 <= r19537;
double r19539 = exp(r19522);
double r19540 = log(r19539);
double r19541 = r19540 * r19524;
double r19542 = r19523 * r19541;
double r19543 = r19520 - r19542;
double r19544 = exp(r19543);
double r19545 = r19518 * r19524;
double r19546 = r19545 + r19533;
double r19547 = sin(r19546);
double r19548 = r19544 * r19547;
double r19549 = -2.5962338926543545e-303;
bool r19550 = r19510 <= r19549;
double r19551 = log(r19510);
double r19552 = r19551 * r19524;
double r19553 = r19552 + r19533;
double r19554 = sin(r19553);
double r19555 = r19528 * r19554;
double r19556 = r19550 ? r19536 : r19555;
double r19557 = r19538 ? r19548 : r19556;
double r19558 = r19512 ? r19536 : r19557;
return r19558;
}



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.0326540582516197e-119 or -1.6487457515453153e-258 < x.re < -2.5962338926543545e-303Initial program 33.2
rmApplied add-cube-cbrt33.2
Applied associate-*l*33.2
Taylor expanded around -inf 19.9
if -1.0326540582516197e-119 < x.re < -1.6487457515453153e-258Initial program 26.1
rmApplied add-cube-cbrt26.1
Applied associate-*l*26.1
rmApplied add-log-exp26.1
if -2.5962338926543545e-303 < x.re Initial program 35.1
rmApplied add-cube-cbrt35.1
Applied associate-*l*35.1
Taylor expanded around inf 24.7
Final simplification23.1
herbie shell --seed 2019344
(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)))))