\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{x.re \cdot y.re + x.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 r60747 = x_re;
double r60748 = y_re;
double r60749 = r60747 * r60748;
double r60750 = x_im;
double r60751 = y_im;
double r60752 = r60750 * r60751;
double r60753 = r60749 + r60752;
double r60754 = r60748 * r60748;
double r60755 = r60751 * r60751;
double r60756 = r60754 + r60755;
double r60757 = r60753 / r60756;
return r60757;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r60758 = 1.0;
double r60759 = y_re;
double r60760 = r60759 * r60759;
double r60761 = y_im;
double r60762 = r60761 * r60761;
double r60763 = r60760 + r60762;
double r60764 = sqrt(r60763);
double r60765 = x_re;
double r60766 = r60765 * r60759;
double r60767 = x_im;
double r60768 = r60767 * r60761;
double r60769 = r60766 + r60768;
double r60770 = r60764 / r60769;
double r60771 = r60758 / r60770;
double r60772 = r60771 / r60764;
return r60772;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.0
rmApplied add-sqr-sqrt26.0
Applied associate-/r*25.9
rmApplied clear-num26.0
Final simplification26.0
herbie shell --seed 2019346
(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))))