\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 r1346533 = x_re;
double r1346534 = y_re;
double r1346535 = r1346533 * r1346534;
double r1346536 = x_im;
double r1346537 = y_im;
double r1346538 = r1346536 * r1346537;
double r1346539 = r1346535 + r1346538;
double r1346540 = r1346534 * r1346534;
double r1346541 = r1346537 * r1346537;
double r1346542 = r1346540 + r1346541;
double r1346543 = r1346539 / r1346542;
return r1346543;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1346544 = x_im;
double r1346545 = y_im;
double r1346546 = r1346544 * r1346545;
double r1346547 = x_re;
double r1346548 = y_re;
double r1346549 = r1346547 * r1346548;
double r1346550 = r1346546 + r1346549;
double r1346551 = r1346548 * r1346548;
double r1346552 = r1346545 * r1346545;
double r1346553 = r1346551 + r1346552;
double r1346554 = sqrt(r1346553);
double r1346555 = r1346550 / r1346554;
double r1346556 = r1346555 / r1346554;
return r1346556;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.2
rmApplied add-sqr-sqrt26.2
Applied associate-/r*26.1
Final simplification26.1
herbie shell --seed 2019155
(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))))