\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\left(x.re \cdot y.re + x.im \cdot y.im\right) \cdot \frac{1}{\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 r87032 = x_re;
double r87033 = y_re;
double r87034 = r87032 * r87033;
double r87035 = x_im;
double r87036 = y_im;
double r87037 = r87035 * r87036;
double r87038 = r87034 + r87037;
double r87039 = r87033 * r87033;
double r87040 = r87036 * r87036;
double r87041 = r87039 + r87040;
double r87042 = r87038 / r87041;
return r87042;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r87043 = x_re;
double r87044 = y_re;
double r87045 = r87043 * r87044;
double r87046 = x_im;
double r87047 = y_im;
double r87048 = r87046 * r87047;
double r87049 = r87045 + r87048;
double r87050 = 1.0;
double r87051 = r87044 * r87044;
double r87052 = r87047 * r87047;
double r87053 = r87051 + r87052;
double r87054 = sqrt(r87053);
double r87055 = r87050 / r87054;
double r87056 = r87049 * r87055;
double r87057 = r87056 / r87054;
return r87057;
}



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
rmApplied div-inv25.9
Final simplification25.9
herbie shell --seed 2019353
(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))))