\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{x.im \cdot y.re - x.re \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 r109696 = x_im;
double r109697 = y_re;
double r109698 = r109696 * r109697;
double r109699 = x_re;
double r109700 = y_im;
double r109701 = r109699 * r109700;
double r109702 = r109698 - r109701;
double r109703 = r109697 * r109697;
double r109704 = r109700 * r109700;
double r109705 = r109703 + r109704;
double r109706 = r109702 / r109705;
return r109706;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r109707 = x_im;
double r109708 = y_re;
double r109709 = r109707 * r109708;
double r109710 = x_re;
double r109711 = y_im;
double r109712 = r109710 * r109711;
double r109713 = r109709 - r109712;
double r109714 = r109708 * r109708;
double r109715 = r109711 * r109711;
double r109716 = r109714 + r109715;
double r109717 = sqrt(r109716);
double r109718 = r109713 / r109717;
double r109719 = r109718 / r109717;
return r109719;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



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