\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 r47289 = x_re;
double r47290 = y_re;
double r47291 = r47289 * r47290;
double r47292 = x_im;
double r47293 = y_im;
double r47294 = r47292 * r47293;
double r47295 = r47291 + r47294;
double r47296 = r47290 * r47290;
double r47297 = r47293 * r47293;
double r47298 = r47296 + r47297;
double r47299 = r47295 / r47298;
return r47299;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r47300 = x_re;
double r47301 = y_re;
double r47302 = r47300 * r47301;
double r47303 = x_im;
double r47304 = y_im;
double r47305 = r47303 * r47304;
double r47306 = r47302 + r47305;
double r47307 = r47301 * r47301;
double r47308 = r47304 * r47304;
double r47309 = r47307 + r47308;
double r47310 = sqrt(r47309);
double r47311 = r47306 / r47310;
double r47312 = r47311 / r47310;
return r47312;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.4
rmApplied add-sqr-sqrt26.4
Applied associate-/r*26.3
Final simplification26.3
herbie shell --seed 2020062
(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))))