\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \left(x.im \cdot y.im + x.re \cdot y.re\right)}{\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 r6682857 = x_re;
double r6682858 = y_re;
double r6682859 = r6682857 * r6682858;
double r6682860 = x_im;
double r6682861 = y_im;
double r6682862 = r6682860 * r6682861;
double r6682863 = r6682859 + r6682862;
double r6682864 = r6682858 * r6682858;
double r6682865 = r6682861 * r6682861;
double r6682866 = r6682864 + r6682865;
double r6682867 = r6682863 / r6682866;
return r6682867;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r6682868 = 1.0;
double r6682869 = y_re;
double r6682870 = r6682869 * r6682869;
double r6682871 = y_im;
double r6682872 = r6682871 * r6682871;
double r6682873 = r6682870 + r6682872;
double r6682874 = sqrt(r6682873);
double r6682875 = r6682868 / r6682874;
double r6682876 = x_im;
double r6682877 = r6682876 * r6682871;
double r6682878 = x_re;
double r6682879 = r6682878 * r6682869;
double r6682880 = r6682877 + r6682879;
double r6682881 = r6682875 * r6682880;
double r6682882 = r6682881 / r6682874;
return r6682882;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.2
rmApplied add-sqr-sqrt26.2
Applied associate-/r*26.1
rmApplied div-inv26.2
Final simplification26.2
herbie shell --seed 2019121
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))