\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 r64268 = x_re;
double r64269 = y_re;
double r64270 = r64268 * r64269;
double r64271 = x_im;
double r64272 = y_im;
double r64273 = r64271 * r64272;
double r64274 = r64270 + r64273;
double r64275 = r64269 * r64269;
double r64276 = r64272 * r64272;
double r64277 = r64275 + r64276;
double r64278 = r64274 / r64277;
return r64278;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r64279 = x_re;
double r64280 = y_re;
double r64281 = r64279 * r64280;
double r64282 = x_im;
double r64283 = y_im;
double r64284 = r64282 * r64283;
double r64285 = r64281 + r64284;
double r64286 = r64280 * r64280;
double r64287 = r64283 * r64283;
double r64288 = r64286 + r64287;
double r64289 = sqrt(r64288);
double r64290 = r64285 / r64289;
double r64291 = r64290 / r64289;
return r64291;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



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