\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{x.im \cdot y.re - x.re \cdot y.im}{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 r38609 = x_im;
double r38610 = y_re;
double r38611 = r38609 * r38610;
double r38612 = x_re;
double r38613 = y_im;
double r38614 = r38612 * r38613;
double r38615 = r38611 - r38614;
double r38616 = r38610 * r38610;
double r38617 = r38613 * r38613;
double r38618 = r38616 + r38617;
double r38619 = r38615 / r38618;
return r38619;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r38620 = x_im;
double r38621 = y_re;
double r38622 = r38620 * r38621;
double r38623 = x_re;
double r38624 = y_im;
double r38625 = r38623 * r38624;
double r38626 = r38622 - r38625;
double r38627 = r38621 * r38621;
double r38628 = r38624 * r38624;
double r38629 = r38627 + r38628;
double r38630 = r38626 / r38629;
return r38630;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.9
Final simplification25.9
herbie shell --seed 2019326
(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))))