\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{1}{\mathsf{fma}\left(y.im, y.im, \left(y.re \cdot y.re\right)\right)} \cdot \mathsf{fma}\left(x.re, y.re, \left(x.im \cdot y.im\right)\right)double f(double x_re, double x_im, double y_re, double y_im) {
double r3446616 = x_re;
double r3446617 = y_re;
double r3446618 = r3446616 * r3446617;
double r3446619 = x_im;
double r3446620 = y_im;
double r3446621 = r3446619 * r3446620;
double r3446622 = r3446618 + r3446621;
double r3446623 = r3446617 * r3446617;
double r3446624 = r3446620 * r3446620;
double r3446625 = r3446623 + r3446624;
double r3446626 = r3446622 / r3446625;
return r3446626;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r3446627 = 1.0;
double r3446628 = y_im;
double r3446629 = y_re;
double r3446630 = r3446629 * r3446629;
double r3446631 = fma(r3446628, r3446628, r3446630);
double r3446632 = r3446627 / r3446631;
double r3446633 = x_re;
double r3446634 = x_im;
double r3446635 = r3446634 * r3446628;
double r3446636 = fma(r3446633, r3446629, r3446635);
double r3446637 = r3446632 * r3446636;
return r3446637;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 25.3
Simplified25.3
rmApplied div-inv25.5
Final simplification25.5
herbie shell --seed 2019125 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))