\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 r60092 = x_im;
double r60093 = y_re;
double r60094 = r60092 * r60093;
double r60095 = x_re;
double r60096 = y_im;
double r60097 = r60095 * r60096;
double r60098 = r60094 - r60097;
double r60099 = r60093 * r60093;
double r60100 = r60096 * r60096;
double r60101 = r60099 + r60100;
double r60102 = r60098 / r60101;
return r60102;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r60103 = x_im;
double r60104 = y_re;
double r60105 = r60103 * r60104;
double r60106 = x_re;
double r60107 = y_im;
double r60108 = r60106 * r60107;
double r60109 = r60105 - r60108;
double r60110 = 1.0;
double r60111 = r60104 * r60104;
double r60112 = r60107 * r60107;
double r60113 = r60111 + r60112;
double r60114 = sqrt(r60113);
double r60115 = r60110 / r60114;
double r60116 = r60109 * r60115;
double r60117 = r60116 / r60114;
return r60117;
}



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