\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 r106764 = x_re;
double r106765 = y_re;
double r106766 = r106764 * r106765;
double r106767 = x_im;
double r106768 = y_im;
double r106769 = r106767 * r106768;
double r106770 = r106766 + r106769;
double r106771 = r106765 * r106765;
double r106772 = r106768 * r106768;
double r106773 = r106771 + r106772;
double r106774 = r106770 / r106773;
return r106774;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r106775 = x_re;
double r106776 = y_re;
double r106777 = r106775 * r106776;
double r106778 = x_im;
double r106779 = y_im;
double r106780 = r106778 * r106779;
double r106781 = r106777 + r106780;
double r106782 = r106776 * r106776;
double r106783 = r106779 * r106779;
double r106784 = r106782 + r106783;
double r106785 = sqrt(r106784);
double r106786 = r106781 / r106785;
double r106787 = r106786 / r106785;
return r106787;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.9
rmApplied add-sqr-sqrt25.9
Applied associate-/r*25.8
Final simplification25.8
herbie shell --seed 2019325
(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))))