\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 r78728 = x_im;
double r78729 = y_re;
double r78730 = r78728 * r78729;
double r78731 = x_re;
double r78732 = y_im;
double r78733 = r78731 * r78732;
double r78734 = r78730 - r78733;
double r78735 = r78729 * r78729;
double r78736 = r78732 * r78732;
double r78737 = r78735 + r78736;
double r78738 = r78734 / r78737;
return r78738;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r78739 = x_im;
double r78740 = y_re;
double r78741 = r78739 * r78740;
double r78742 = x_re;
double r78743 = y_im;
double r78744 = r78742 * r78743;
double r78745 = r78741 - r78744;
double r78746 = r78740 * r78740;
double r78747 = r78743 * r78743;
double r78748 = r78746 + r78747;
double r78749 = sqrt(r78748);
double r78750 = r78745 / r78749;
double r78751 = r78750 / r78749;
return r78751;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.4
rmApplied add-sqr-sqrt26.4
Applied associate-/r*26.3
Final simplification26.3
herbie shell --seed 2020056
(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))))