\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 r57345 = x_im;
double r57346 = y_re;
double r57347 = r57345 * r57346;
double r57348 = x_re;
double r57349 = y_im;
double r57350 = r57348 * r57349;
double r57351 = r57347 - r57350;
double r57352 = r57346 * r57346;
double r57353 = r57349 * r57349;
double r57354 = r57352 + r57353;
double r57355 = r57351 / r57354;
return r57355;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r57356 = x_im;
double r57357 = y_re;
double r57358 = r57356 * r57357;
double r57359 = x_re;
double r57360 = y_im;
double r57361 = r57359 * r57360;
double r57362 = r57358 - r57361;
double r57363 = r57357 * r57357;
double r57364 = r57360 * r57360;
double r57365 = r57363 + r57364;
double r57366 = sqrt(r57365);
double r57367 = r57362 / r57366;
double r57368 = r57367 / r57366;
return r57368;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



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