\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}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.re}} - \frac{x.re}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{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 r73092 = x_im;
double r73093 = y_re;
double r73094 = r73092 * r73093;
double r73095 = x_re;
double r73096 = y_im;
double r73097 = r73095 * r73096;
double r73098 = r73094 - r73097;
double r73099 = r73093 * r73093;
double r73100 = r73096 * r73096;
double r73101 = r73099 + r73100;
double r73102 = r73098 / r73101;
return r73102;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r73103 = x_im;
double r73104 = y_re;
double r73105 = r73104 * r73104;
double r73106 = y_im;
double r73107 = r73106 * r73106;
double r73108 = r73105 + r73107;
double r73109 = sqrt(r73108);
double r73110 = r73109 / r73104;
double r73111 = r73103 / r73110;
double r73112 = x_re;
double r73113 = r73109 / r73106;
double r73114 = r73112 / r73113;
double r73115 = r73111 - r73114;
double r73116 = r73115 / r73109;
return r73116;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.1
rmApplied add-sqr-sqrt26.1
Applied associate-/r*26.1
rmApplied add-sqr-sqrt26.1
Applied sqrt-prod26.2
rmApplied div-sub26.2
Simplified24.4
Simplified22.5
Final simplification22.5
herbie shell --seed 2019318
(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))))