\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 r59485 = x_re;
double r59486 = y_re;
double r59487 = r59485 * r59486;
double r59488 = x_im;
double r59489 = y_im;
double r59490 = r59488 * r59489;
double r59491 = r59487 + r59490;
double r59492 = r59486 * r59486;
double r59493 = r59489 * r59489;
double r59494 = r59492 + r59493;
double r59495 = r59491 / r59494;
return r59495;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r59496 = x_re;
double r59497 = y_re;
double r59498 = r59496 * r59497;
double r59499 = x_im;
double r59500 = y_im;
double r59501 = r59499 * r59500;
double r59502 = r59498 + r59501;
double r59503 = r59497 * r59497;
double r59504 = r59500 * r59500;
double r59505 = r59503 + r59504;
double r59506 = sqrt(r59505);
double r59507 = r59502 / r59506;
double r59508 = r59507 / r59506;
return r59508;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.9
rmApplied add-sqr-sqrt25.9
Applied associate-/r*25.9
Final simplification25.9
herbie shell --seed 2019208
(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))))