\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{x.im \cdot y.im + x.re \cdot y.re}{\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 r3311446 = x_re;
double r3311447 = y_re;
double r3311448 = r3311446 * r3311447;
double r3311449 = x_im;
double r3311450 = y_im;
double r3311451 = r3311449 * r3311450;
double r3311452 = r3311448 + r3311451;
double r3311453 = r3311447 * r3311447;
double r3311454 = r3311450 * r3311450;
double r3311455 = r3311453 + r3311454;
double r3311456 = r3311452 / r3311455;
return r3311456;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r3311457 = x_im;
double r3311458 = y_im;
double r3311459 = r3311457 * r3311458;
double r3311460 = x_re;
double r3311461 = y_re;
double r3311462 = r3311460 * r3311461;
double r3311463 = r3311459 + r3311462;
double r3311464 = r3311461 * r3311461;
double r3311465 = r3311458 * r3311458;
double r3311466 = r3311464 + r3311465;
double r3311467 = sqrt(r3311466);
double r3311468 = r3311463 / r3311467;
double r3311469 = r3311468 / r3311467;
return r3311469;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.8
rmApplied add-sqr-sqrt26.8
Applied associate-/r*26.7
Final simplification26.7
herbie shell --seed 2019174
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))