\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{y.re \cdot x.re + x.im \cdot y.im}{\sqrt{{y.im}^{2} + y.re \cdot y.re}}}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}double f(double x_re, double x_im, double y_re, double y_im) {
double r41790 = x_re;
double r41791 = y_re;
double r41792 = r41790 * r41791;
double r41793 = x_im;
double r41794 = y_im;
double r41795 = r41793 * r41794;
double r41796 = r41792 + r41795;
double r41797 = r41791 * r41791;
double r41798 = r41794 * r41794;
double r41799 = r41797 + r41798;
double r41800 = r41796 / r41799;
return r41800;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r41801 = y_re;
double r41802 = x_re;
double r41803 = r41801 * r41802;
double r41804 = x_im;
double r41805 = y_im;
double r41806 = r41804 * r41805;
double r41807 = r41803 + r41806;
double r41808 = 2.0;
double r41809 = pow(r41805, r41808);
double r41810 = r41801 * r41801;
double r41811 = r41809 + r41810;
double r41812 = sqrt(r41811);
double r41813 = r41807 / r41812;
double r41814 = r41805 * r41805;
double r41815 = r41814 + r41810;
double r41816 = sqrt(r41815);
double r41817 = r41813 / r41816;
return r41817;
}



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
Simplified26.0
Final simplification26.0
herbie shell --seed 2019179
(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))))