\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{1}{y.re \cdot y.re + y.im \cdot y.im} \cdot \left(x.im \cdot y.im + x.re \cdot y.re\right)double f(double x_re, double x_im, double y_re, double y_im) {
double r2671533 = x_re;
double r2671534 = y_re;
double r2671535 = r2671533 * r2671534;
double r2671536 = x_im;
double r2671537 = y_im;
double r2671538 = r2671536 * r2671537;
double r2671539 = r2671535 + r2671538;
double r2671540 = r2671534 * r2671534;
double r2671541 = r2671537 * r2671537;
double r2671542 = r2671540 + r2671541;
double r2671543 = r2671539 / r2671542;
return r2671543;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2671544 = 1.0;
double r2671545 = y_re;
double r2671546 = r2671545 * r2671545;
double r2671547 = y_im;
double r2671548 = r2671547 * r2671547;
double r2671549 = r2671546 + r2671548;
double r2671550 = r2671544 / r2671549;
double r2671551 = x_im;
double r2671552 = r2671551 * r2671547;
double r2671553 = x_re;
double r2671554 = r2671553 * r2671545;
double r2671555 = r2671552 + r2671554;
double r2671556 = r2671550 * r2671555;
return r2671556;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.6
rmApplied div-inv25.7
Final simplification25.7
herbie shell --seed 2019162
(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))))