\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 r59831 = x_re;
double r59832 = y_re;
double r59833 = r59831 * r59832;
double r59834 = x_im;
double r59835 = y_im;
double r59836 = r59834 * r59835;
double r59837 = r59833 + r59836;
double r59838 = r59832 * r59832;
double r59839 = r59835 * r59835;
double r59840 = r59838 + r59839;
double r59841 = r59837 / r59840;
return r59841;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r59842 = 1.0;
double r59843 = y_re;
double r59844 = r59843 * r59843;
double r59845 = y_im;
double r59846 = r59845 * r59845;
double r59847 = r59844 + r59846;
double r59848 = sqrt(r59847);
double r59849 = x_re;
double r59850 = r59849 * r59843;
double r59851 = x_im;
double r59852 = r59851 * r59845;
double r59853 = r59850 + r59852;
double r59854 = r59848 / r59853;
double r59855 = r59842 / r59854;
double r59856 = r59855 / r59848;
return r59856;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



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