\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 r47299 = x_re;
double r47300 = y_re;
double r47301 = r47299 * r47300;
double r47302 = x_im;
double r47303 = y_im;
double r47304 = r47302 * r47303;
double r47305 = r47301 + r47304;
double r47306 = r47300 * r47300;
double r47307 = r47303 * r47303;
double r47308 = r47306 + r47307;
double r47309 = r47305 / r47308;
return r47309;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r47310 = x_re;
double r47311 = y_re;
double r47312 = r47310 * r47311;
double r47313 = x_im;
double r47314 = y_im;
double r47315 = r47313 * r47314;
double r47316 = r47312 + r47315;
double r47317 = r47311 * r47311;
double r47318 = r47314 * r47314;
double r47319 = r47317 + r47318;
double r47320 = sqrt(r47319);
double r47321 = r47316 / r47320;
double r47322 = r47321 / r47320;
return r47322;
}



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))))