\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 r1988485 = x_re;
double r1988486 = y_re;
double r1988487 = r1988485 * r1988486;
double r1988488 = x_im;
double r1988489 = y_im;
double r1988490 = r1988488 * r1988489;
double r1988491 = r1988487 + r1988490;
double r1988492 = r1988486 * r1988486;
double r1988493 = r1988489 * r1988489;
double r1988494 = r1988492 + r1988493;
double r1988495 = r1988491 / r1988494;
return r1988495;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1988496 = 1.0;
double r1988497 = y_re;
double r1988498 = r1988497 * r1988497;
double r1988499 = y_im;
double r1988500 = r1988499 * r1988499;
double r1988501 = r1988498 + r1988500;
double r1988502 = sqrt(r1988501);
double r1988503 = r1988496 / r1988502;
double r1988504 = x_im;
double r1988505 = r1988504 * r1988499;
double r1988506 = x_re;
double r1988507 = r1988506 * r1988497;
double r1988508 = r1988505 + r1988507;
double r1988509 = r1988508 / r1988502;
double r1988510 = r1988503 * r1988509;
return r1988510;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.7
rmApplied add-sqr-sqrt25.7
Applied *-un-lft-identity25.7
Applied times-frac25.7
Final simplification25.7
herbie shell --seed 2019143
(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))))