\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{x.im \cdot y.re - x.re \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 r102728 = x_im;
double r102729 = y_re;
double r102730 = r102728 * r102729;
double r102731 = x_re;
double r102732 = y_im;
double r102733 = r102731 * r102732;
double r102734 = r102730 - r102733;
double r102735 = r102729 * r102729;
double r102736 = r102732 * r102732;
double r102737 = r102735 + r102736;
double r102738 = r102734 / r102737;
return r102738;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r102739 = x_im;
double r102740 = y_re;
double r102741 = r102739 * r102740;
double r102742 = x_re;
double r102743 = y_im;
double r102744 = r102742 * r102743;
double r102745 = r102741 - r102744;
double r102746 = r102740 * r102740;
double r102747 = r102743 * r102743;
double r102748 = r102746 + r102747;
double r102749 = sqrt(r102748);
double r102750 = r102745 / r102749;
double r102751 = r102750 / r102749;
return r102751;
}



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
Final simplification25.9
herbie shell --seed 2020027
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
:precision binary64
(/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))