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 -2.28746704192552239 \cdot 10^{-34}:\\
\;\;\;\;e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(\sqrt[3]{y.im} \cdot \sqrt[3]{y.im}\right)\right) \cdot \sqrt[3]{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 -5.99844333164626394 \cdot 10^{-160}:\\
\;\;\;\;e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(\sqrt[3]{y.im} \cdot \sqrt[3]{y.im}\right)\right) \cdot \sqrt[3]{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]{\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)\\
\mathbf{elif}\;x.re \le -3.483126227749789 \cdot 10^{-310}:\\
\;\;\;\;e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(\sqrt[3]{y.im} \cdot \sqrt[3]{y.im}\right)\right) \cdot \sqrt[3]{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{else}:\\
\;\;\;\;e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot \left(\sqrt[3]{y.im} \cdot \sqrt[3]{y.im}\right)\right) \cdot \sqrt[3]{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 r18538 = x_re;
double r18539 = r18538 * r18538;
double r18540 = x_im;
double r18541 = r18540 * r18540;
double r18542 = r18539 + r18541;
double r18543 = sqrt(r18542);
double r18544 = log(r18543);
double r18545 = y_re;
double r18546 = r18544 * r18545;
double r18547 = atan2(r18540, r18538);
double r18548 = y_im;
double r18549 = r18547 * r18548;
double r18550 = r18546 - r18549;
double r18551 = exp(r18550);
double r18552 = r18544 * r18548;
double r18553 = r18547 * r18545;
double r18554 = r18552 + r18553;
double r18555 = sin(r18554);
double r18556 = r18551 * r18555;
return r18556;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r18557 = x_re;
double r18558 = -2.2874670419255224e-34;
bool r18559 = r18557 <= r18558;
double r18560 = r18557 * r18557;
double r18561 = x_im;
double r18562 = r18561 * r18561;
double r18563 = r18560 + r18562;
double r18564 = sqrt(r18563);
double r18565 = log(r18564);
double r18566 = y_re;
double r18567 = r18565 * r18566;
double r18568 = atan2(r18561, r18557);
double r18569 = y_im;
double r18570 = cbrt(r18569);
double r18571 = r18570 * r18570;
double r18572 = r18568 * r18571;
double r18573 = r18572 * r18570;
double r18574 = r18567 - r18573;
double r18575 = exp(r18574);
double r18576 = -1.0;
double r18577 = r18576 * r18557;
double r18578 = log(r18577);
double r18579 = r18578 * r18569;
double r18580 = r18568 * r18566;
double r18581 = r18579 + r18580;
double r18582 = sin(r18581);
double r18583 = r18575 * r18582;
double r18584 = -5.998443331646264e-160;
bool r18585 = r18557 <= r18584;
double r18586 = r18565 * r18569;
double r18587 = r18586 + r18580;
double r18588 = sin(r18587);
double r18589 = cbrt(r18588);
double r18590 = r18589 * r18589;
double r18591 = r18590 * r18589;
double r18592 = r18575 * r18591;
double r18593 = -3.4831262277498e-310;
bool r18594 = r18557 <= r18593;
double r18595 = log(r18557);
double r18596 = r18595 * r18569;
double r18597 = r18596 + r18580;
double r18598 = sin(r18597);
double r18599 = r18575 * r18598;
double r18600 = r18594 ? r18583 : r18599;
double r18601 = r18585 ? r18592 : r18600;
double r18602 = r18559 ? r18583 : r18601;
return r18602;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if x.re < -2.2874670419255224e-34 or -5.998443331646264e-160 < x.re < -3.4831262277498e-310Initial program 35.9
rmApplied add-cube-cbrt35.9
Applied associate-*r*35.9
Taylor expanded around -inf 21.5
if -2.2874670419255224e-34 < x.re < -5.998443331646264e-160Initial program 15.5
rmApplied add-cube-cbrt15.5
Applied associate-*r*15.5
rmApplied add-cube-cbrt15.8
if -3.4831262277498e-310 < x.re Initial program 34.6
rmApplied add-cube-cbrt34.6
Applied associate-*r*34.6
Taylor expanded around inf 24.6
Final simplification22.5
herbie shell --seed 2020065
(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)))))