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.2685618014437514 \cdot 10^{-33}:\\
\;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + y.im \cdot \log \left(-x.re\right)\right)\\
\mathbf{elif}\;x.re \le -4.748647839754185 \cdot 10^{-157}:\\
\;\;\;\;\sin \left(y.im \cdot \log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right) \cdot e^{y.re \cdot \log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) - \left(\log \left(\sqrt[3]{e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}\right) + \log \left(\sqrt[3]{e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}} \cdot \sqrt[3]{e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}}\right)\right)}\\
\mathbf{elif}\;x.re \le -1.2253344719312 \cdot 10^{-312}:\\
\;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + y.im \cdot \log \left(-x.re\right)\right)\\
\mathbf{else}:\\
\;\;\;\;e^{y.re \cdot \log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + \log x.re \cdot y.im\right)\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r1392479 = x_re;
double r1392480 = r1392479 * r1392479;
double r1392481 = x_im;
double r1392482 = r1392481 * r1392481;
double r1392483 = r1392480 + r1392482;
double r1392484 = sqrt(r1392483);
double r1392485 = log(r1392484);
double r1392486 = y_re;
double r1392487 = r1392485 * r1392486;
double r1392488 = atan2(r1392481, r1392479);
double r1392489 = y_im;
double r1392490 = r1392488 * r1392489;
double r1392491 = r1392487 - r1392490;
double r1392492 = exp(r1392491);
double r1392493 = r1392485 * r1392489;
double r1392494 = r1392488 * r1392486;
double r1392495 = r1392493 + r1392494;
double r1392496 = sin(r1392495);
double r1392497 = r1392492 * r1392496;
return r1392497;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1392498 = x_re;
double r1392499 = -1.2685618014437514e-33;
bool r1392500 = r1392498 <= r1392499;
double r1392501 = y_re;
double r1392502 = r1392498 * r1392498;
double r1392503 = x_im;
double r1392504 = r1392503 * r1392503;
double r1392505 = r1392502 + r1392504;
double r1392506 = sqrt(r1392505);
double r1392507 = log(r1392506);
double r1392508 = r1392501 * r1392507;
double r1392509 = atan2(r1392503, r1392498);
double r1392510 = y_im;
double r1392511 = r1392509 * r1392510;
double r1392512 = r1392508 - r1392511;
double r1392513 = exp(r1392512);
double r1392514 = r1392509 * r1392501;
double r1392515 = -r1392498;
double r1392516 = log(r1392515);
double r1392517 = r1392510 * r1392516;
double r1392518 = r1392514 + r1392517;
double r1392519 = sin(r1392518);
double r1392520 = r1392513 * r1392519;
double r1392521 = -4.748647839754185e-157;
bool r1392522 = r1392498 <= r1392521;
double r1392523 = r1392510 * r1392507;
double r1392524 = r1392523 + r1392514;
double r1392525 = sin(r1392524);
double r1392526 = exp(r1392511);
double r1392527 = cbrt(r1392526);
double r1392528 = log(r1392527);
double r1392529 = r1392527 * r1392527;
double r1392530 = log(r1392529);
double r1392531 = r1392528 + r1392530;
double r1392532 = r1392508 - r1392531;
double r1392533 = exp(r1392532);
double r1392534 = r1392525 * r1392533;
double r1392535 = -1.2253344719312e-312;
bool r1392536 = r1392498 <= r1392535;
double r1392537 = log(r1392498);
double r1392538 = r1392537 * r1392510;
double r1392539 = r1392514 + r1392538;
double r1392540 = sin(r1392539);
double r1392541 = r1392513 * r1392540;
double r1392542 = r1392536 ? r1392520 : r1392541;
double r1392543 = r1392522 ? r1392534 : r1392542;
double r1392544 = r1392500 ? r1392520 : r1392543;
return r1392544;
}



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.2685618014437514e-33 or -4.748647839754185e-157 < x.re < -1.2253344719312e-312Initial program 35.3
Taylor expanded around -inf 21.1
Simplified21.1
if -1.2685618014437514e-33 < x.re < -4.748647839754185e-157Initial program 16.1
rmApplied add-log-exp18.7
rmApplied add-cube-cbrt18.7
Applied log-prod18.7
if -1.2253344719312e-312 < x.re Initial program 34.3
Taylor expanded around inf 23.6
Final simplification22.1
herbie shell --seed 2019168
(FPCore (x.re x.im y.re y.im)
:name "powComplex, imaginary part"
(* (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)))))