\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.im \cdot x.im + y.re \cdot x.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 r1846126 = x_re;
double r1846127 = y_re;
double r1846128 = r1846126 * r1846127;
double r1846129 = x_im;
double r1846130 = y_im;
double r1846131 = r1846129 * r1846130;
double r1846132 = r1846128 + r1846131;
double r1846133 = r1846127 * r1846127;
double r1846134 = r1846130 * r1846130;
double r1846135 = r1846133 + r1846134;
double r1846136 = r1846132 / r1846135;
return r1846136;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1846137 = 1.0;
double r1846138 = y_re;
double r1846139 = r1846138 * r1846138;
double r1846140 = y_im;
double r1846141 = r1846140 * r1846140;
double r1846142 = r1846139 + r1846141;
double r1846143 = sqrt(r1846142);
double r1846144 = x_im;
double r1846145 = r1846140 * r1846144;
double r1846146 = x_re;
double r1846147 = r1846138 * r1846146;
double r1846148 = r1846145 + r1846147;
double r1846149 = r1846143 / r1846148;
double r1846150 = r1846137 / r1846149;
double r1846151 = r1846150 / r1846143;
return r1846151;
}



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 clear-num25.7
Final simplification25.7
herbie shell --seed 2019130
(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))))