\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 r64157 = x_im;
double r64158 = y_re;
double r64159 = r64157 * r64158;
double r64160 = x_re;
double r64161 = y_im;
double r64162 = r64160 * r64161;
double r64163 = r64159 - r64162;
double r64164 = r64158 * r64158;
double r64165 = r64161 * r64161;
double r64166 = r64164 + r64165;
double r64167 = r64163 / r64166;
return r64167;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r64168 = x_im;
double r64169 = y_re;
double r64170 = r64168 * r64169;
double r64171 = x_re;
double r64172 = y_im;
double r64173 = r64171 * r64172;
double r64174 = r64170 - r64173;
double r64175 = 1.0;
double r64176 = r64169 * r64169;
double r64177 = r64172 * r64172;
double r64178 = r64176 + r64177;
double r64179 = sqrt(r64178);
double r64180 = r64175 / r64179;
double r64181 = r64174 * r64180;
double r64182 = r64181 / r64179;
return r64182;
}



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))))