\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 r57191 = x_re;
double r57192 = y_re;
double r57193 = r57191 * r57192;
double r57194 = x_im;
double r57195 = y_im;
double r57196 = r57194 * r57195;
double r57197 = r57193 + r57196;
double r57198 = r57192 * r57192;
double r57199 = r57195 * r57195;
double r57200 = r57198 + r57199;
double r57201 = r57197 / r57200;
return r57201;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r57202 = x_re;
double r57203 = y_re;
double r57204 = r57202 * r57203;
double r57205 = x_im;
double r57206 = y_im;
double r57207 = r57205 * r57206;
double r57208 = r57204 + r57207;
double r57209 = r57203 * r57203;
double r57210 = r57206 * r57206;
double r57211 = r57209 + r57210;
double r57212 = sqrt(r57211);
double r57213 = r57208 / r57212;
double r57214 = r57213 / r57212;
return r57214;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.1
rmApplied add-sqr-sqrt26.1
Applied associate-/r*26.0
Final simplification26.0
herbie shell --seed 2020100
(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))))