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^{\log \left(\mathsf{hypot}\left(x.re, x.im\right)\right) \cdot y.re - \left(\left(\sqrt[3]{\left(\sqrt[3]{y.im} \cdot \sqrt[3]{y.im}\right) \cdot \tan^{-1}_* \frac{x.im}{x.re}} \cdot \sqrt[3]{\left(\sqrt[3]{y.im} \cdot \sqrt[3]{y.im}\right) \cdot \tan^{-1}_* \frac{x.im}{x.re}}\right) \cdot \sqrt[3]{\sqrt[3]{\left(\sqrt[3]{y.im} \cdot \sqrt[3]{y.im}\right) \cdot \tan^{-1}_* \frac{x.im}{x.re}} \cdot \left(\sqrt[3]{\left(\sqrt[3]{y.im} \cdot \sqrt[3]{y.im}\right) \cdot \tan^{-1}_* \frac{x.im}{x.re}} \cdot \sqrt[3]{\left(\sqrt[3]{y.im} \cdot \sqrt[3]{y.im}\right) \cdot \tan^{-1}_* \frac{x.im}{x.re}}\right)}\right) \cdot \sqrt[3]{y.im}} \cdot \cos \left(\mathsf{fma}\left(y.im, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), y.re \cdot \tan^{-1}_* \frac{x.im}{x.re}\right)\right)double f(double x_re, double x_im, double y_re, double y_im) {
double r1268664 = x_re;
double r1268665 = r1268664 * r1268664;
double r1268666 = x_im;
double r1268667 = r1268666 * r1268666;
double r1268668 = r1268665 + r1268667;
double r1268669 = sqrt(r1268668);
double r1268670 = log(r1268669);
double r1268671 = y_re;
double r1268672 = r1268670 * r1268671;
double r1268673 = atan2(r1268666, r1268664);
double r1268674 = y_im;
double r1268675 = r1268673 * r1268674;
double r1268676 = r1268672 - r1268675;
double r1268677 = exp(r1268676);
double r1268678 = r1268670 * r1268674;
double r1268679 = r1268673 * r1268671;
double r1268680 = r1268678 + r1268679;
double r1268681 = cos(r1268680);
double r1268682 = r1268677 * r1268681;
return r1268682;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1268683 = x_re;
double r1268684 = x_im;
double r1268685 = hypot(r1268683, r1268684);
double r1268686 = log(r1268685);
double r1268687 = y_re;
double r1268688 = r1268686 * r1268687;
double r1268689 = y_im;
double r1268690 = cbrt(r1268689);
double r1268691 = r1268690 * r1268690;
double r1268692 = atan2(r1268684, r1268683);
double r1268693 = r1268691 * r1268692;
double r1268694 = cbrt(r1268693);
double r1268695 = r1268694 * r1268694;
double r1268696 = r1268694 * r1268695;
double r1268697 = cbrt(r1268696);
double r1268698 = r1268695 * r1268697;
double r1268699 = r1268698 * r1268690;
double r1268700 = r1268688 - r1268699;
double r1268701 = exp(r1268700);
double r1268702 = r1268687 * r1268692;
double r1268703 = fma(r1268689, r1268686, r1268702);
double r1268704 = cos(r1268703);
double r1268705 = r1268701 * r1268704;
return r1268705;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 32.5
Simplified3.4
rmApplied add-cube-cbrt3.4
Applied associate-*r*3.4
rmApplied add-cube-cbrt3.4
rmApplied add-cbrt-cube3.4
Final simplification3.4
herbie shell --seed 2019143 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
:name "powComplex, real part"
(* (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)))))