\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 r52179 = x_im;
double r52180 = y_re;
double r52181 = r52179 * r52180;
double r52182 = x_re;
double r52183 = y_im;
double r52184 = r52182 * r52183;
double r52185 = r52181 - r52184;
double r52186 = r52180 * r52180;
double r52187 = r52183 * r52183;
double r52188 = r52186 + r52187;
double r52189 = r52185 / r52188;
return r52189;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r52190 = x_im;
double r52191 = y_re;
double r52192 = r52190 * r52191;
double r52193 = x_re;
double r52194 = y_im;
double r52195 = r52193 * r52194;
double r52196 = r52192 - r52195;
double r52197 = 1.0;
double r52198 = r52191 * r52191;
double r52199 = r52194 * r52194;
double r52200 = r52198 + r52199;
double r52201 = sqrt(r52200);
double r52202 = r52197 / r52201;
double r52203 = r52196 * r52202;
double r52204 = r52203 / r52201;
return r52204;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.2
rmApplied add-sqr-sqrt26.2
Applied associate-/r*26.1
rmApplied div-inv26.2
Final simplification26.2
herbie shell --seed 2020024
(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))))