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){\left(e^{\sqrt[3]{\mathsf{fma}\left(y.re, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), -\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\right)} \cdot \sqrt[3]{\mathsf{fma}\left(y.re, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), -\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\right)}}\right)}^{\left(\sqrt[3]{\sqrt[3]{\mathsf{fma}\left(y.re, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), -\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\right)} \cdot \sqrt[3]{\mathsf{fma}\left(y.re, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), -\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\right)}} \cdot \sqrt[3]{\sqrt[3]{\mathsf{fma}\left(y.re, \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right), -\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im\right)}}\right)}double f(double x_re, double x_im, double y_re, double y_im) {
double r12749 = x_re;
double r12750 = r12749 * r12749;
double r12751 = x_im;
double r12752 = r12751 * r12751;
double r12753 = r12750 + r12752;
double r12754 = sqrt(r12753);
double r12755 = log(r12754);
double r12756 = y_re;
double r12757 = r12755 * r12756;
double r12758 = atan2(r12751, r12749);
double r12759 = y_im;
double r12760 = r12758 * r12759;
double r12761 = r12757 - r12760;
double r12762 = exp(r12761);
double r12763 = r12755 * r12759;
double r12764 = r12758 * r12756;
double r12765 = r12763 + r12764;
double r12766 = cos(r12765);
double r12767 = r12762 * r12766;
return r12767;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r12768 = y_re;
double r12769 = x_re;
double r12770 = x_im;
double r12771 = hypot(r12769, r12770);
double r12772 = log(r12771);
double r12773 = atan2(r12770, r12769);
double r12774 = y_im;
double r12775 = r12773 * r12774;
double r12776 = -r12775;
double r12777 = fma(r12768, r12772, r12776);
double r12778 = cbrt(r12777);
double r12779 = r12778 * r12778;
double r12780 = exp(r12779);
double r12781 = cbrt(r12779);
double r12782 = cbrt(r12778);
double r12783 = r12781 * r12782;
double r12784 = pow(r12780, r12783);
return r12784;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 32.8
Taylor expanded around 0 19.7
rmApplied add-exp-log19.7
Simplified3.9
rmApplied add-cube-cbrt3.9
Applied exp-prod3.9
rmApplied add-cube-cbrt3.9
Applied cbrt-prod3.9
Final simplification3.9
herbie shell --seed 2020034 +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)))))