\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 r49412 = x_im;
double r49413 = y_re;
double r49414 = r49412 * r49413;
double r49415 = x_re;
double r49416 = y_im;
double r49417 = r49415 * r49416;
double r49418 = r49414 - r49417;
double r49419 = r49413 * r49413;
double r49420 = r49416 * r49416;
double r49421 = r49419 + r49420;
double r49422 = r49418 / r49421;
return r49422;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r49423 = x_im;
double r49424 = y_re;
double r49425 = r49423 * r49424;
double r49426 = x_re;
double r49427 = y_im;
double r49428 = r49426 * r49427;
double r49429 = r49425 - r49428;
double r49430 = r49424 * r49424;
double r49431 = r49427 * r49427;
double r49432 = r49430 + r49431;
double r49433 = sqrt(r49432);
double r49434 = r49429 / r49433;
double r49435 = r49434 / r49433;
return r49435;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



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