\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{x.im \cdot y.re - x.re \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 r1782606 = x_im;
double r1782607 = y_re;
double r1782608 = r1782606 * r1782607;
double r1782609 = x_re;
double r1782610 = y_im;
double r1782611 = r1782609 * r1782610;
double r1782612 = r1782608 - r1782611;
double r1782613 = r1782607 * r1782607;
double r1782614 = r1782610 * r1782610;
double r1782615 = r1782613 + r1782614;
double r1782616 = r1782612 / r1782615;
return r1782616;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1782617 = 1.0;
double r1782618 = y_re;
double r1782619 = r1782618 * r1782618;
double r1782620 = y_im;
double r1782621 = r1782620 * r1782620;
double r1782622 = r1782619 + r1782621;
double r1782623 = sqrt(r1782622);
double r1782624 = r1782617 / r1782623;
double r1782625 = x_im;
double r1782626 = r1782625 * r1782618;
double r1782627 = x_re;
double r1782628 = r1782627 * r1782620;
double r1782629 = r1782626 - r1782628;
double r1782630 = r1782629 / r1782623;
double r1782631 = r1782624 * r1782630;
return r1782631;
}



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 *-un-lft-identity26.1
Applied times-frac26.1
Final simplification26.1
herbie shell --seed 2019146
(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))))