\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\left(x.im \cdot y.re - x.re \cdot y.im\right) \cdot \frac{1}{\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 r61160 = x_im;
double r61161 = y_re;
double r61162 = r61160 * r61161;
double r61163 = x_re;
double r61164 = y_im;
double r61165 = r61163 * r61164;
double r61166 = r61162 - r61165;
double r61167 = r61161 * r61161;
double r61168 = r61164 * r61164;
double r61169 = r61167 + r61168;
double r61170 = r61166 / r61169;
return r61170;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r61171 = x_im;
double r61172 = y_re;
double r61173 = r61171 * r61172;
double r61174 = x_re;
double r61175 = y_im;
double r61176 = r61174 * r61175;
double r61177 = r61173 - r61176;
double r61178 = 1.0;
double r61179 = r61172 * r61172;
double r61180 = r61175 * r61175;
double r61181 = r61179 + r61180;
double r61182 = sqrt(r61181);
double r61183 = r61178 / r61182;
double r61184 = r61177 * r61183;
double r61185 = r61184 / r61182;
return r61185;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.9
rmApplied add-sqr-sqrt25.9
Applied associate-/r*25.8
rmApplied div-inv25.9
Final simplification25.9
herbie shell --seed 2019323
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
:precision binary64
(/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))