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 \sqrt[3]{y.re}\right) \cdot \left(1 \cdot \log \left(\mathsf{hypot}\left(x.re, x.im\right)\right)\right)\right) \cdot \left(\sqrt[3]{\sqrt[3]{y.re} \cdot \sqrt[3]{y.re}} \cdot \sqrt[3]{\sqrt[3]{\sqrt[3]{y.re} \cdot \sqrt[3]{y.re}} \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 r18896 = x_re;
double r18897 = r18896 * r18896;
double r18898 = x_im;
double r18899 = r18898 * r18898;
double r18900 = r18897 + r18899;
double r18901 = sqrt(r18900);
double r18902 = log(r18901);
double r18903 = y_re;
double r18904 = r18902 * r18903;
double r18905 = atan2(r18898, r18896);
double r18906 = y_im;
double r18907 = r18905 * r18906;
double r18908 = r18904 - r18907;
double r18909 = exp(r18908);
double r18910 = r18902 * r18906;
double r18911 = r18905 * r18903;
double r18912 = r18910 + r18911;
double r18913 = cos(r18912);
double r18914 = r18909 * r18913;
return r18914;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r18915 = y_re;
double r18916 = cbrt(r18915);
double r18917 = r18916 * r18916;
double r18918 = 1.0;
double r18919 = x_re;
double r18920 = x_im;
double r18921 = hypot(r18919, r18920);
double r18922 = log(r18921);
double r18923 = r18918 * r18922;
double r18924 = r18917 * r18923;
double r18925 = cbrt(r18917);
double r18926 = cbrt(r18916);
double r18927 = r18925 * r18926;
double r18928 = cbrt(r18927);
double r18929 = r18925 * r18928;
double r18930 = r18924 * r18929;
double r18931 = atan2(r18920, r18919);
double r18932 = y_im;
double r18933 = r18931 * r18932;
double r18934 = r18930 - r18933;
double r18935 = exp(r18934);
return r18935;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 33.8
Taylor expanded around 0 19.9
rmApplied add-cube-cbrt19.9
Applied associate-*r*19.9
Simplified4.1
rmApplied add-cube-cbrt4.1
Applied cbrt-prod4.1
rmApplied add-cube-cbrt4.1
Applied cbrt-prod4.1
Final simplification4.1
herbie shell --seed 2019354 +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)))))