\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 r6593272 = x_re;
double r6593273 = y_re;
double r6593274 = r6593272 * r6593273;
double r6593275 = x_im;
double r6593276 = y_im;
double r6593277 = r6593275 * r6593276;
double r6593278 = r6593274 + r6593277;
double r6593279 = r6593273 * r6593273;
double r6593280 = r6593276 * r6593276;
double r6593281 = r6593279 + r6593280;
double r6593282 = r6593278 / r6593281;
return r6593282;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r6593283 = x_re;
double r6593284 = y_re;
double r6593285 = r6593283 * r6593284;
double r6593286 = x_im;
double r6593287 = y_im;
double r6593288 = r6593286 * r6593287;
double r6593289 = r6593285 + r6593288;
double r6593290 = r6593284 * r6593284;
double r6593291 = r6593287 * r6593287;
double r6593292 = r6593290 + r6593291;
double r6593293 = sqrt(r6593292);
double r6593294 = r6593289 / r6593293;
double r6593295 = r6593294 / r6593293;
return r6593295;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.8
rmApplied add-sqr-sqrt26.8
Applied associate-/r*26.7
Final simplification26.7
herbie shell --seed 2019174
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))