\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 r330 = x_re;
double r331 = y_re;
double r332 = r330 * r331;
double r333 = x_im;
double r334 = y_im;
double r335 = r333 * r334;
double r336 = r332 + r335;
double r337 = r331 * r331;
double r338 = r334 * r334;
double r339 = r337 + r338;
double r340 = r336 / r339;
return r340;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r341 = x_re;
double r342 = y_re;
double r343 = r341 * r342;
double r344 = x_im;
double r345 = y_im;
double r346 = r344 * r345;
double r347 = r343 + r346;
double r348 = r342 * r342;
double r349 = r345 * r345;
double r350 = r348 + r349;
double r351 = sqrt(r350);
double r352 = r347 / r351;
double r353 = r352 / r351;
return r353;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



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