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 - y.im \cdot \tan^{-1}_* \frac{x.im}{x.re}}double f(double x_re, double x_im, double y_re, double y_im) {
double r782909 = x_re;
double r782910 = r782909 * r782909;
double r782911 = x_im;
double r782912 = r782911 * r782911;
double r782913 = r782910 + r782912;
double r782914 = sqrt(r782913);
double r782915 = log(r782914);
double r782916 = y_re;
double r782917 = r782915 * r782916;
double r782918 = atan2(r782911, r782909);
double r782919 = y_im;
double r782920 = r782918 * r782919;
double r782921 = r782917 - r782920;
double r782922 = exp(r782921);
double r782923 = r782915 * r782919;
double r782924 = r782918 * r782916;
double r782925 = r782923 + r782924;
double r782926 = cos(r782925);
double r782927 = r782922 * r782926;
return r782927;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r782928 = x_re;
double r782929 = x_im;
double r782930 = hypot(r782928, r782929);
double r782931 = log(r782930);
double r782932 = y_re;
double r782933 = r782931 * r782932;
double r782934 = y_im;
double r782935 = atan2(r782929, r782928);
double r782936 = r782934 * r782935;
double r782937 = r782933 - r782936;
double r782938 = exp(r782937);
return r782938;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 31.0
Taylor expanded around 0 17.0
rmApplied *-un-lft-identity17.0
Applied associate-*r*17.0
Simplified0
Final simplification0
herbie shell --seed 2019130 +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)))))