\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{x.im \cdot y.im + x.re \cdot y.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 r2058477 = x_re;
double r2058478 = y_re;
double r2058479 = r2058477 * r2058478;
double r2058480 = x_im;
double r2058481 = y_im;
double r2058482 = r2058480 * r2058481;
double r2058483 = r2058479 + r2058482;
double r2058484 = r2058478 * r2058478;
double r2058485 = r2058481 * r2058481;
double r2058486 = r2058484 + r2058485;
double r2058487 = r2058483 / r2058486;
return r2058487;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2058488 = 1.0;
double r2058489 = y_re;
double r2058490 = r2058489 * r2058489;
double r2058491 = y_im;
double r2058492 = r2058491 * r2058491;
double r2058493 = r2058490 + r2058492;
double r2058494 = sqrt(r2058493);
double r2058495 = r2058488 / r2058494;
double r2058496 = x_im;
double r2058497 = r2058496 * r2058491;
double r2058498 = x_re;
double r2058499 = r2058498 * r2058489;
double r2058500 = r2058497 + r2058499;
double r2058501 = r2058500 / r2058494;
double r2058502 = r2058495 * r2058501;
return r2058502;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.0
rmApplied add-sqr-sqrt26.0
Applied *-un-lft-identity26.0
Applied times-frac26.0
Final simplification26.0
herbie shell --seed 2019142
(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))))