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)\frac{\cos \left(\mathsf{fma}\left(y.im, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), \left(y.re \cdot \left(\sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}} \cdot \left(\sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}} \cdot \sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}}\right)\right)\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}} \cdot \left(\sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}} \cdot \sqrt[3]{\sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}}\right)\right) \cdot \sqrt[3]{\tan^{-1}_* \frac{x.im}{x.re}}\right)\right)\right)}{e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im - y.re \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)}}double f(double x_re, double x_im, double y_re, double y_im) {
double r1329744 = x_re;
double r1329745 = r1329744 * r1329744;
double r1329746 = x_im;
double r1329747 = r1329746 * r1329746;
double r1329748 = r1329745 + r1329747;
double r1329749 = sqrt(r1329748);
double r1329750 = log(r1329749);
double r1329751 = y_re;
double r1329752 = r1329750 * r1329751;
double r1329753 = atan2(r1329746, r1329744);
double r1329754 = y_im;
double r1329755 = r1329753 * r1329754;
double r1329756 = r1329752 - r1329755;
double r1329757 = exp(r1329756);
double r1329758 = r1329750 * r1329754;
double r1329759 = r1329753 * r1329751;
double r1329760 = r1329758 + r1329759;
double r1329761 = cos(r1329760);
double r1329762 = r1329757 * r1329761;
return r1329762;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1329763 = y_im;
double r1329764 = x_re;
double r1329765 = x_im;
double r1329766 = hypot(r1329764, r1329765);
double r1329767 = log(r1329766);
double r1329768 = y_re;
double r1329769 = atan2(r1329765, r1329764);
double r1329770 = cbrt(r1329769);
double r1329771 = cbrt(r1329770);
double r1329772 = r1329771 * r1329771;
double r1329773 = r1329771 * r1329772;
double r1329774 = r1329768 * r1329773;
double r1329775 = r1329773 * r1329770;
double r1329776 = r1329774 * r1329775;
double r1329777 = fma(r1329763, r1329767, r1329776);
double r1329778 = cos(r1329777);
double r1329779 = r1329769 * r1329763;
double r1329780 = r1329768 * r1329767;
double r1329781 = r1329779 - r1329780;
double r1329782 = exp(r1329781);
double r1329783 = r1329778 / r1329782;
return r1329783;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 33.5
Simplified3.4
rmApplied add-cube-cbrt3.4
Applied associate-*l*3.4
rmApplied add-cube-cbrt3.4
rmApplied add-cube-cbrt3.4
Final simplification3.4
herbie shell --seed 2019165 +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)))))