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)e^{\left(\left(\sqrt[3]{y.re} \cdot \left(\left(\sqrt[3]{\sqrt[3]{y.re}} \cdot \sqrt[3]{\sqrt[3]{y.re}}\right) \cdot \sqrt[3]{\sqrt[3]{y.re}}\right)\right) \cdot \left(1 \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)\right)\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{y.re}} \cdot \sqrt[3]{\sqrt[3]{y.re}}\right) \cdot \sqrt[3]{\sqrt[3]{y.re}}\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im}double f(double x_re, double x_im, double y_re, double y_im) {
double r18566 = x_re;
double r18567 = r18566 * r18566;
double r18568 = x_im;
double r18569 = r18568 * r18568;
double r18570 = r18567 + r18569;
double r18571 = sqrt(r18570);
double r18572 = log(r18571);
double r18573 = y_re;
double r18574 = r18572 * r18573;
double r18575 = atan2(r18568, r18566);
double r18576 = y_im;
double r18577 = r18575 * r18576;
double r18578 = r18574 - r18577;
double r18579 = exp(r18578);
double r18580 = r18572 * r18576;
double r18581 = r18575 * r18573;
double r18582 = r18580 + r18581;
double r18583 = cos(r18582);
double r18584 = r18579 * r18583;
return r18584;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r18585 = y_re;
double r18586 = cbrt(r18585);
double r18587 = cbrt(r18586);
double r18588 = r18587 * r18587;
double r18589 = r18588 * r18587;
double r18590 = r18586 * r18589;
double r18591 = 1.0;
double r18592 = x_re;
double r18593 = x_im;
double r18594 = hypot(r18592, r18593);
double r18595 = log(r18594);
double r18596 = r18591 * r18595;
double r18597 = r18590 * r18596;
double r18598 = r18597 * r18589;
double r18599 = atan2(r18593, r18592);
double r18600 = y_im;
double r18601 = r18599 * r18600;
double r18602 = r18598 - r18601;
double r18603 = exp(r18602);
return r18603;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 32.8
Taylor expanded around 0 19.5
rmApplied add-cube-cbrt19.5
Applied associate-*r*19.5
Simplified4.0
rmApplied add-cube-cbrt4.0
rmApplied add-cube-cbrt4.0
Final simplification4.0
herbie shell --seed 2019352 +o rules:numerics
(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)))))