\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 r78489 = x_re;
double r78490 = y_re;
double r78491 = r78489 * r78490;
double r78492 = x_im;
double r78493 = y_im;
double r78494 = r78492 * r78493;
double r78495 = r78491 + r78494;
double r78496 = r78490 * r78490;
double r78497 = r78493 * r78493;
double r78498 = r78496 + r78497;
double r78499 = r78495 / r78498;
return r78499;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r78500 = x_re;
double r78501 = y_re;
double r78502 = r78500 * r78501;
double r78503 = x_im;
double r78504 = y_im;
double r78505 = r78503 * r78504;
double r78506 = r78502 + r78505;
double r78507 = r78501 * r78501;
double r78508 = r78504 * r78504;
double r78509 = r78507 + r78508;
double r78510 = sqrt(r78509);
double r78511 = r78506 / r78510;
double r78512 = r78511 / r78510;
return r78512;
}



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