\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 r47056 = x_re;
double r47057 = y_re;
double r47058 = r47056 * r47057;
double r47059 = x_im;
double r47060 = y_im;
double r47061 = r47059 * r47060;
double r47062 = r47058 + r47061;
double r47063 = r47057 * r47057;
double r47064 = r47060 * r47060;
double r47065 = r47063 + r47064;
double r47066 = r47062 / r47065;
return r47066;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r47067 = x_re;
double r47068 = y_re;
double r47069 = r47067 * r47068;
double r47070 = x_im;
double r47071 = y_im;
double r47072 = r47070 * r47071;
double r47073 = r47069 + r47072;
double r47074 = r47068 * r47068;
double r47075 = r47071 * r47071;
double r47076 = r47074 + r47075;
double r47077 = sqrt(r47076);
double r47078 = r47073 / r47077;
double r47079 = r47078 / r47077;
return r47079;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.8
rmApplied add-sqr-sqrt26.8
Applied associate-/r*26.7
Simplified26.7
Final simplification26.7
herbie shell --seed 2019174
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))