\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{x.re \cdot y.re + x.im \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\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 r2538711 = x_re;
double r2538712 = y_re;
double r2538713 = r2538711 * r2538712;
double r2538714 = x_im;
double r2538715 = y_im;
double r2538716 = r2538714 * r2538715;
double r2538717 = r2538713 + r2538716;
double r2538718 = r2538712 * r2538712;
double r2538719 = r2538715 * r2538715;
double r2538720 = r2538718 + r2538719;
double r2538721 = r2538717 / r2538720;
return r2538721;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2538722 = x_re;
double r2538723 = y_re;
double r2538724 = r2538722 * r2538723;
double r2538725 = x_im;
double r2538726 = y_im;
double r2538727 = r2538725 * r2538726;
double r2538728 = r2538724 + r2538727;
double r2538729 = r2538723 * r2538723;
double r2538730 = r2538726 * r2538726;
double r2538731 = r2538729 + r2538730;
double r2538732 = sqrt(r2538731);
double r2538733 = r2538728 / r2538732;
double r2538734 = r2538733 / r2538732;
return r2538734;
}



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 associate-/r*25.7
rmApplied div-inv25.7
rmApplied associate-*r/25.7
Simplified25.7
Final simplification25.7
herbie shell --seed 2019152
(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))))