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 -9.1653030324901512 \cdot 10^{-42}:\\
\;\;\;\;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(-x.re\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\\
\mathbf{elif}\;x.re \le -5.792029271889603 \cdot 10^{-251}:\\
\;\;\;\;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 \left(\left(\sqrt[3]{\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)} \cdot \sqrt[3]{\left(\sqrt[3]{\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)} \cdot \sqrt[3]{\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)}\right) \cdot \sqrt[3]{\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)}}\right) \cdot \sqrt[3]{\sin \left(\log \left(\left(\sqrt[3]{\sqrt{x.re \cdot x.re + x.im \cdot x.im}} \cdot \sqrt[3]{\sqrt{x.re \cdot x.re + x.im \cdot x.im}}\right) \cdot \sqrt[3]{\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)}\right)\\
\mathbf{elif}\;x.re \le -3.743441145734632 \cdot 10^{-310}:\\
\;\;\;\;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(-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 - \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 r29510 = x_re;
double r29511 = r29510 * r29510;
double r29512 = x_im;
double r29513 = r29512 * r29512;
double r29514 = r29511 + r29513;
double r29515 = sqrt(r29514);
double r29516 = log(r29515);
double r29517 = y_re;
double r29518 = r29516 * r29517;
double r29519 = atan2(r29512, r29510);
double r29520 = y_im;
double r29521 = r29519 * r29520;
double r29522 = r29518 - r29521;
double r29523 = exp(r29522);
double r29524 = r29516 * r29520;
double r29525 = r29519 * r29517;
double r29526 = r29524 + r29525;
double r29527 = sin(r29526);
double r29528 = r29523 * r29527;
return r29528;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r29529 = x_re;
double r29530 = -9.165303032490151e-42;
bool r29531 = r29529 <= r29530;
double r29532 = r29529 * r29529;
double r29533 = x_im;
double r29534 = r29533 * r29533;
double r29535 = r29532 + r29534;
double r29536 = sqrt(r29535);
double r29537 = log(r29536);
double r29538 = y_re;
double r29539 = r29537 * r29538;
double r29540 = atan2(r29533, r29529);
double r29541 = y_im;
double r29542 = r29540 * r29541;
double r29543 = r29539 - r29542;
double r29544 = exp(r29543);
double r29545 = -r29529;
double r29546 = log(r29545);
double r29547 = r29546 * r29541;
double r29548 = r29540 * r29538;
double r29549 = r29547 + r29548;
double r29550 = sin(r29549);
double r29551 = r29544 * r29550;
double r29552 = -5.792029271889603e-251;
bool r29553 = r29529 <= r29552;
double r29554 = r29537 * r29541;
double r29555 = r29554 + r29548;
double r29556 = sin(r29555);
double r29557 = cbrt(r29556);
double r29558 = r29557 * r29557;
double r29559 = r29558 * r29557;
double r29560 = cbrt(r29559);
double r29561 = r29557 * r29560;
double r29562 = cbrt(r29536);
double r29563 = r29562 * r29562;
double r29564 = r29563 * r29562;
double r29565 = log(r29564);
double r29566 = r29565 * r29541;
double r29567 = r29566 + r29548;
double r29568 = sin(r29567);
double r29569 = cbrt(r29568);
double r29570 = r29561 * r29569;
double r29571 = r29544 * r29570;
double r29572 = -3.74344114573463e-310;
bool r29573 = r29529 <= r29572;
double r29574 = log(r29529);
double r29575 = r29574 * r29541;
double r29576 = r29575 + r29548;
double r29577 = sin(r29576);
double r29578 = r29544 * r29577;
double r29579 = r29573 ? r29551 : r29578;
double r29580 = r29553 ? r29571 : r29579;
double r29581 = r29531 ? r29551 : r29580;
return r29581;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if x.re < -9.165303032490151e-42 or -5.792029271889603e-251 < x.re < -3.74344114573463e-310Initial program 37.3
Taylor expanded around -inf 21.8
Simplified21.8
if -9.165303032490151e-42 < x.re < -5.792029271889603e-251Initial program 21.9
rmApplied add-cube-cbrt22.2
rmApplied add-cube-cbrt22.2
rmApplied add-cube-cbrt22.2
if -3.74344114573463e-310 < x.re Initial program 34.8
Taylor expanded around inf 24.4
Final simplification23.2
herbie shell --seed 2019199
(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)))))