\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 r51173 = x_re;
double r51174 = y_re;
double r51175 = r51173 * r51174;
double r51176 = x_im;
double r51177 = y_im;
double r51178 = r51176 * r51177;
double r51179 = r51175 + r51178;
double r51180 = r51174 * r51174;
double r51181 = r51177 * r51177;
double r51182 = r51180 + r51181;
double r51183 = r51179 / r51182;
return r51183;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r51184 = x_re;
double r51185 = y_re;
double r51186 = r51184 * r51185;
double r51187 = x_im;
double r51188 = y_im;
double r51189 = r51187 * r51188;
double r51190 = r51186 + r51189;
double r51191 = r51185 * r51185;
double r51192 = r51188 * r51188;
double r51193 = r51191 + r51192;
double r51194 = sqrt(r51193);
double r51195 = r51190 / r51194;
double r51196 = r51195 / r51194;
return r51196;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.4
rmApplied add-sqr-sqrt26.4
Applied associate-/r*26.3
Final simplification26.3
herbie shell --seed 2020020
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
:precision binary64
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))