\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 r2685620 = x_im;
double r2685621 = y_re;
double r2685622 = r2685620 * r2685621;
double r2685623 = x_re;
double r2685624 = y_im;
double r2685625 = r2685623 * r2685624;
double r2685626 = r2685622 - r2685625;
double r2685627 = r2685621 * r2685621;
double r2685628 = r2685624 * r2685624;
double r2685629 = r2685627 + r2685628;
double r2685630 = r2685626 / r2685629;
return r2685630;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2685631 = x_im;
double r2685632 = y_re;
double r2685633 = r2685631 * r2685632;
double r2685634 = x_re;
double r2685635 = y_im;
double r2685636 = r2685634 * r2685635;
double r2685637 = r2685633 - r2685636;
double r2685638 = r2685632 * r2685632;
double r2685639 = r2685635 * r2685635;
double r2685640 = r2685638 + r2685639;
double r2685641 = sqrt(r2685640);
double r2685642 = r2685637 / r2685641;
double r2685643 = r2685642 / r2685641;
return r2685643;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 27.0
rmApplied add-sqr-sqrt27.0
Applied associate-/r*26.9
Final simplification26.9
herbie shell --seed 2019171
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
(/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))