\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{x.re \cdot y.re + x.im \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot 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 r48944 = x_re;
double r48945 = y_re;
double r48946 = r48944 * r48945;
double r48947 = x_im;
double r48948 = y_im;
double r48949 = r48947 * r48948;
double r48950 = r48946 + r48949;
double r48951 = r48945 * r48945;
double r48952 = r48948 * r48948;
double r48953 = r48951 + r48952;
double r48954 = r48950 / r48953;
return r48954;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r48955 = x_re;
double r48956 = y_re;
double r48957 = r48955 * r48956;
double r48958 = x_im;
double r48959 = y_im;
double r48960 = r48958 * r48959;
double r48961 = r48957 + r48960;
double r48962 = r48956 * r48956;
double r48963 = r48959 * r48959;
double r48964 = r48962 + r48963;
double r48965 = sqrt(r48964);
double r48966 = r48961 / r48965;
double r48967 = r48966 / r48965;
return r48967;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.5
rmApplied add-sqr-sqrt26.5
Applied associate-/r*26.5
Final simplification26.5
herbie shell --seed 2019344
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
:precision binary64
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))