\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 r1916891 = x_im;
double r1916892 = y_re;
double r1916893 = r1916891 * r1916892;
double r1916894 = x_re;
double r1916895 = y_im;
double r1916896 = r1916894 * r1916895;
double r1916897 = r1916893 - r1916896;
double r1916898 = r1916892 * r1916892;
double r1916899 = r1916895 * r1916895;
double r1916900 = r1916898 + r1916899;
double r1916901 = r1916897 / r1916900;
return r1916901;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1916902 = x_im;
double r1916903 = y_re;
double r1916904 = r1916902 * r1916903;
double r1916905 = x_re;
double r1916906 = y_im;
double r1916907 = r1916905 * r1916906;
double r1916908 = r1916904 - r1916907;
double r1916909 = r1916903 * r1916903;
double r1916910 = r1916906 * r1916906;
double r1916911 = r1916909 + r1916910;
double r1916912 = sqrt(r1916911);
double r1916913 = r1916908 / r1916912;
double r1916914 = r1916913 / r1916912;
return r1916914;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.5
rmApplied add-sqr-sqrt25.5
Applied associate-/r*25.4
Final simplification25.4
herbie shell --seed 2019135
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
(/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))