\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 r2716604 = x_im;
double r2716605 = y_re;
double r2716606 = r2716604 * r2716605;
double r2716607 = x_re;
double r2716608 = y_im;
double r2716609 = r2716607 * r2716608;
double r2716610 = r2716606 - r2716609;
double r2716611 = r2716605 * r2716605;
double r2716612 = r2716608 * r2716608;
double r2716613 = r2716611 + r2716612;
double r2716614 = r2716610 / r2716613;
return r2716614;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2716615 = x_im;
double r2716616 = y_re;
double r2716617 = r2716615 * r2716616;
double r2716618 = x_re;
double r2716619 = y_im;
double r2716620 = r2716618 * r2716619;
double r2716621 = r2716617 - r2716620;
double r2716622 = r2716616 * r2716616;
double r2716623 = r2716619 * r2716619;
double r2716624 = r2716622 + r2716623;
double r2716625 = sqrt(r2716624);
double r2716626 = r2716621 / r2716625;
double r2716627 = r2716626 / r2716625;
return r2716627;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



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