\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}double f(double x_re, double x_im, double y_re, double y_im) {
double r2869127 = x_re;
double r2869128 = y_re;
double r2869129 = r2869127 * r2869128;
double r2869130 = x_im;
double r2869131 = y_im;
double r2869132 = r2869130 * r2869131;
double r2869133 = r2869129 + r2869132;
double r2869134 = r2869128 * r2869128;
double r2869135 = r2869131 * r2869131;
double r2869136 = r2869134 + r2869135;
double r2869137 = r2869133 / r2869136;
return r2869137;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2869138 = y_re;
double r2869139 = x_re;
double r2869140 = r2869138 * r2869139;
double r2869141 = y_im;
double r2869142 = x_im;
double r2869143 = r2869141 * r2869142;
double r2869144 = r2869140 + r2869143;
double r2869145 = r2869141 * r2869141;
double r2869146 = r2869138 * r2869138;
double r2869147 = r2869145 + r2869146;
double r2869148 = sqrt(r2869147);
double r2869149 = r2869144 / r2869148;
double r2869150 = r2869149 / r2869148;
return r2869150;
}



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 associate-/r*25.9
Final simplification25.9
herbie shell --seed 2019200
(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))))