\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{x.re \cdot y.re + x.im \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 r46589 = x_re;
double r46590 = y_re;
double r46591 = r46589 * r46590;
double r46592 = x_im;
double r46593 = y_im;
double r46594 = r46592 * r46593;
double r46595 = r46591 + r46594;
double r46596 = r46590 * r46590;
double r46597 = r46593 * r46593;
double r46598 = r46596 + r46597;
double r46599 = r46595 / r46598;
return r46599;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r46600 = x_re;
double r46601 = y_re;
double r46602 = r46600 * r46601;
double r46603 = x_im;
double r46604 = y_im;
double r46605 = r46603 * r46604;
double r46606 = r46602 + r46605;
double r46607 = r46601 * r46601;
double r46608 = r46604 * r46604;
double r46609 = r46607 + r46608;
double r46610 = r46606 / r46609;
return r46610;
}



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
Final simplification26.1
herbie shell --seed 2020059
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
:precision binary64
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))