double f(double x_re, double x_im, double y_re, double y_im) {
double r361920 = x_re;
double r361921 = r361920 * r361920;
double r361922 = x_im;
double r361923 = r361922 * r361922;
double r361924 = r361921 + r361923;
double r361925 = sqrt(r361924);
double r361926 = log(r361925);
double r361927 = y_re;
double r361928 = r361926 * r361927;
double r361929 = atan2(r361922, r361920);
double r361930 = y_im;
double r361931 = r361929 * r361930;
double r361932 = r361928 - r361931;
double r361933 = exp(r361932);
double r361934 = r361926 * r361930;
double r361935 = r361929 * r361927;
double r361936 = r361934 + r361935;
double r361937 = sin(r361936);
double r361938 = r361933 * r361937;
return r361938;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r361939 = y_im;
double r361940 = x_re;
double r361941 = x_im;
double r361942 = hypot(r361940, r361941);
double r361943 = log(r361942);
double r361944 = atan2(r361941, r361940);
double r361945 = y_re;
double r361946 = r361944 * r361945;
double r361947 = fma(r361939, r361943, r361946);
double r361948 = sin(r361947);
double r361949 = r361944 * r361939;
double r361950 = r361945 * r361943;
double r361951 = r361949 - r361950;
double r361952 = exp(r361951);
double r361953 = r361948 / r361952;
return r361953;
}
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 \sin \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{\sin \left((y.im \cdot \left(\log \left(\sqrt{x.re^2 + x.im^2}^*\right)\right) + \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right))_*\right)}{e^{\tan^{-1}_* \frac{x.im}{x.re} \cdot y.im - y.re \cdot \log \left(\sqrt{x.re^2 + x.im^2}^*\right)}}


Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 30.6
Simplified0.1
Final simplification0.1
herbie shell --seed 2019102 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
:name "powComplex, imaginary part"
(* (exp (- (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) (* (atan2 x.im x.re) y.im))) (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))))