\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 r63388 = x_im;
double r63389 = y_re;
double r63390 = r63388 * r63389;
double r63391 = x_re;
double r63392 = y_im;
double r63393 = r63391 * r63392;
double r63394 = r63390 - r63393;
double r63395 = r63389 * r63389;
double r63396 = r63392 * r63392;
double r63397 = r63395 + r63396;
double r63398 = r63394 / r63397;
return r63398;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r63399 = x_im;
double r63400 = y_re;
double r63401 = r63399 * r63400;
double r63402 = x_re;
double r63403 = y_im;
double r63404 = r63402 * r63403;
double r63405 = r63401 - r63404;
double r63406 = r63400 * r63400;
double r63407 = r63403 * r63403;
double r63408 = r63406 + r63407;
double r63409 = sqrt(r63408);
double r63410 = r63405 / r63409;
double r63411 = r63410 / r63409;
return r63411;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.7
rmApplied add-sqr-sqrt25.7
Applied associate-/r*25.7
Final simplification25.7
herbie shell --seed 2020047
(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))))