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 \cos \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 -348135322.851262987:\\
\;\;\;\;e^{\log \left(-1 \cdot x.re\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\
\mathbf{elif}\;x.re \le -2.68208540535999221 \cdot 10^{-135}:\\
\;\;\;\;e^{\log \left(\sqrt[3]{{\left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right)}^{3}}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\
\mathbf{elif}\;x.re \le -6.921451733338435 \cdot 10^{-310}:\\
\;\;\;\;e^{\log \left(-1 \cdot x.re\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\
\mathbf{else}:\\
\;\;\;\;e^{\log x.re \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot 1\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r14512 = x_re;
double r14513 = r14512 * r14512;
double r14514 = x_im;
double r14515 = r14514 * r14514;
double r14516 = r14513 + r14515;
double r14517 = sqrt(r14516);
double r14518 = log(r14517);
double r14519 = y_re;
double r14520 = r14518 * r14519;
double r14521 = atan2(r14514, r14512);
double r14522 = y_im;
double r14523 = r14521 * r14522;
double r14524 = r14520 - r14523;
double r14525 = exp(r14524);
double r14526 = r14518 * r14522;
double r14527 = r14521 * r14519;
double r14528 = r14526 + r14527;
double r14529 = cos(r14528);
double r14530 = r14525 * r14529;
return r14530;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r14531 = x_re;
double r14532 = -348135322.851263;
bool r14533 = r14531 <= r14532;
double r14534 = -1.0;
double r14535 = r14534 * r14531;
double r14536 = log(r14535);
double r14537 = y_re;
double r14538 = r14536 * r14537;
double r14539 = x_im;
double r14540 = atan2(r14539, r14531);
double r14541 = y_im;
double r14542 = r14540 * r14541;
double r14543 = r14538 - r14542;
double r14544 = exp(r14543);
double r14545 = 1.0;
double r14546 = r14544 * r14545;
double r14547 = -2.6820854053599922e-135;
bool r14548 = r14531 <= r14547;
double r14549 = r14531 * r14531;
double r14550 = r14539 * r14539;
double r14551 = r14549 + r14550;
double r14552 = sqrt(r14551);
double r14553 = 3.0;
double r14554 = pow(r14552, r14553);
double r14555 = cbrt(r14554);
double r14556 = log(r14555);
double r14557 = r14556 * r14537;
double r14558 = r14557 - r14542;
double r14559 = exp(r14558);
double r14560 = r14559 * r14545;
double r14561 = -6.92145173333843e-310;
bool r14562 = r14531 <= r14561;
double r14563 = log(r14531);
double r14564 = r14563 * r14537;
double r14565 = r14564 - r14542;
double r14566 = exp(r14565);
double r14567 = r14566 * r14545;
double r14568 = r14562 ? r14546 : r14567;
double r14569 = r14548 ? r14560 : r14568;
double r14570 = r14533 ? r14546 : r14569;
return r14570;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if x.re < -348135322.851263 or -2.6820854053599922e-135 < x.re < -6.92145173333843e-310Initial program 36.6
Taylor expanded around 0 19.6
rmApplied add-cbrt-cube25.8
Simplified25.8
Taylor expanded around -inf 4.6
if -348135322.851263 < x.re < -2.6820854053599922e-135Initial program 16.8
Taylor expanded around 0 10.2
rmApplied add-cbrt-cube14.2
Simplified14.2
if -6.92145173333843e-310 < x.re Initial program 34.8
Taylor expanded around 0 21.7
Taylor expanded around inf 11.5
Final simplification9.3
herbie shell --seed 2020033
(FPCore (x.re x.im y.re y.im)
:name "powComplex, real part"
:precision binary64
(* (exp (- (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) (* (atan2 x.im x.re) y.im))) (cos (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))))