\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{x.im \cdot y.re}{y.re \cdot y.re + y.im \cdot y.im} - \frac{x.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}double f(double x_re, double x_im, double y_re, double y_im) {
double r53930 = x_im;
double r53931 = y_re;
double r53932 = r53930 * r53931;
double r53933 = x_re;
double r53934 = y_im;
double r53935 = r53933 * r53934;
double r53936 = r53932 - r53935;
double r53937 = r53931 * r53931;
double r53938 = r53934 * r53934;
double r53939 = r53937 + r53938;
double r53940 = r53936 / r53939;
return r53940;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r53941 = x_im;
double r53942 = y_re;
double r53943 = r53941 * r53942;
double r53944 = r53942 * r53942;
double r53945 = y_im;
double r53946 = r53945 * r53945;
double r53947 = r53944 + r53946;
double r53948 = r53943 / r53947;
double r53949 = x_re;
double r53950 = sqrt(r53947);
double r53951 = r53949 / r53950;
double r53952 = r53945 / r53950;
double r53953 = r53951 * r53952;
double r53954 = r53948 - r53953;
return r53954;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.2
rmApplied div-sub26.2
rmApplied add-sqr-sqrt26.2
Applied times-frac24.7
Final simplification24.7
herbie shell --seed 2019325
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
:precision binary64
(/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))