\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{1 \cdot \left(x.re \cdot y.re + x.im \cdot y.im\right)}{\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 r59429 = x_re;
double r59430 = y_re;
double r59431 = r59429 * r59430;
double r59432 = x_im;
double r59433 = y_im;
double r59434 = r59432 * r59433;
double r59435 = r59431 + r59434;
double r59436 = r59430 * r59430;
double r59437 = r59433 * r59433;
double r59438 = r59436 + r59437;
double r59439 = r59435 / r59438;
return r59439;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r59440 = 1.0;
double r59441 = x_re;
double r59442 = y_re;
double r59443 = r59441 * r59442;
double r59444 = x_im;
double r59445 = y_im;
double r59446 = r59444 * r59445;
double r59447 = r59443 + r59446;
double r59448 = r59440 * r59447;
double r59449 = r59442 * r59442;
double r59450 = r59445 * r59445;
double r59451 = r59449 + r59450;
double r59452 = sqrt(r59451);
double r59453 = r59448 / r59452;
double r59454 = r59453 / r59452;
return r59454;
}



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.5
rmApplied *-un-lft-identity26.5
Final simplification26.5
herbie shell --seed 2020027
(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))))