\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 r1306686 = x_im;
double r1306687 = y_re;
double r1306688 = r1306686 * r1306687;
double r1306689 = x_re;
double r1306690 = y_im;
double r1306691 = r1306689 * r1306690;
double r1306692 = r1306688 - r1306691;
double r1306693 = r1306687 * r1306687;
double r1306694 = r1306690 * r1306690;
double r1306695 = r1306693 + r1306694;
double r1306696 = r1306692 / r1306695;
return r1306696;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1306697 = x_im;
double r1306698 = y_re;
double r1306699 = r1306697 * r1306698;
double r1306700 = x_re;
double r1306701 = y_im;
double r1306702 = r1306700 * r1306701;
double r1306703 = r1306699 - r1306702;
double r1306704 = r1306698 * r1306698;
double r1306705 = r1306701 * r1306701;
double r1306706 = r1306704 + r1306705;
double r1306707 = sqrt(r1306706);
double r1306708 = r1306703 / r1306707;
double r1306709 = r1306708 / r1306707;
return r1306709;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.4
rmApplied add-sqr-sqrt25.4
Applied associate-/r*25.3
Final simplification25.3
herbie shell --seed 2019154
(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))))