\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 r114249 = x_re;
double r114250 = y_re;
double r114251 = r114249 * r114250;
double r114252 = x_im;
double r114253 = y_im;
double r114254 = r114252 * r114253;
double r114255 = r114251 + r114254;
double r114256 = r114250 * r114250;
double r114257 = r114253 * r114253;
double r114258 = r114256 + r114257;
double r114259 = r114255 / r114258;
return r114259;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r114260 = x_re;
double r114261 = y_re;
double r114262 = r114260 * r114261;
double r114263 = x_im;
double r114264 = y_im;
double r114265 = r114263 * r114264;
double r114266 = r114262 + r114265;
double r114267 = r114261 * r114261;
double r114268 = r114264 * r114264;
double r114269 = r114267 + r114268;
double r114270 = sqrt(r114269);
double r114271 = r114266 / r114270;
double r114272 = r114271 / r114270;
return r114272;
}



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