\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \left(x.im \cdot y.im + x.re \cdot y.re\right)}{\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 r2796464 = x_re;
double r2796465 = y_re;
double r2796466 = r2796464 * r2796465;
double r2796467 = x_im;
double r2796468 = y_im;
double r2796469 = r2796467 * r2796468;
double r2796470 = r2796466 + r2796469;
double r2796471 = r2796465 * r2796465;
double r2796472 = r2796468 * r2796468;
double r2796473 = r2796471 + r2796472;
double r2796474 = r2796470 / r2796473;
return r2796474;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2796475 = 1.0;
double r2796476 = y_re;
double r2796477 = r2796476 * r2796476;
double r2796478 = y_im;
double r2796479 = r2796478 * r2796478;
double r2796480 = r2796477 + r2796479;
double r2796481 = sqrt(r2796480);
double r2796482 = r2796475 / r2796481;
double r2796483 = x_im;
double r2796484 = r2796483 * r2796478;
double r2796485 = x_re;
double r2796486 = r2796485 * r2796476;
double r2796487 = r2796484 + r2796486;
double r2796488 = r2796482 * r2796487;
double r2796489 = r2796488 / r2796481;
return r2796489;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.8
rmApplied add-sqr-sqrt25.8
Applied associate-/r*25.7
rmApplied div-inv25.8
Final simplification25.8
herbie shell --seed 2019163
(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))))