\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.im \cdot x.im + y.re \cdot x.re}}}{\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 r43439 = x_re;
double r43440 = y_re;
double r43441 = r43439 * r43440;
double r43442 = x_im;
double r43443 = y_im;
double r43444 = r43442 * r43443;
double r43445 = r43441 + r43444;
double r43446 = r43440 * r43440;
double r43447 = r43443 * r43443;
double r43448 = r43446 + r43447;
double r43449 = r43445 / r43448;
return r43449;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r43450 = 1.0;
double r43451 = y_re;
double r43452 = r43451 * r43451;
double r43453 = y_im;
double r43454 = r43453 * r43453;
double r43455 = r43452 + r43454;
double r43456 = sqrt(r43455);
double r43457 = x_im;
double r43458 = r43453 * r43457;
double r43459 = x_re;
double r43460 = r43451 * r43459;
double r43461 = r43458 + r43460;
double r43462 = r43456 / r43461;
double r43463 = r43450 / r43462;
double r43464 = r43463 / r43456;
return r43464;
}



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
rmApplied add-sqr-sqrt25.9
Applied associate-/r*25.8
rmApplied clear-num25.9
Simplified25.9
Final simplification25.9
herbie shell --seed 2019198
(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))))