\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 r53486 = x_im;
double r53487 = y_re;
double r53488 = r53486 * r53487;
double r53489 = x_re;
double r53490 = y_im;
double r53491 = r53489 * r53490;
double r53492 = r53488 - r53491;
double r53493 = r53487 * r53487;
double r53494 = r53490 * r53490;
double r53495 = r53493 + r53494;
double r53496 = r53492 / r53495;
return r53496;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r53497 = x_im;
double r53498 = y_re;
double r53499 = r53497 * r53498;
double r53500 = x_re;
double r53501 = y_im;
double r53502 = r53500 * r53501;
double r53503 = r53499 - r53502;
double r53504 = r53498 * r53498;
double r53505 = r53501 * r53501;
double r53506 = r53504 + r53505;
double r53507 = sqrt(r53506);
double r53508 = r53503 / r53507;
double r53509 = r53508 / r53507;
return r53509;
}



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.6
Final simplification25.6
herbie shell --seed 2019209
(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))))