\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{x.im \cdot y.re - x.re \cdot y.im}{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 r45625 = x_im;
double r45626 = y_re;
double r45627 = r45625 * r45626;
double r45628 = x_re;
double r45629 = y_im;
double r45630 = r45628 * r45629;
double r45631 = r45627 - r45630;
double r45632 = r45626 * r45626;
double r45633 = r45629 * r45629;
double r45634 = r45632 + r45633;
double r45635 = r45631 / r45634;
return r45635;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r45636 = x_im;
double r45637 = y_re;
double r45638 = r45636 * r45637;
double r45639 = x_re;
double r45640 = y_im;
double r45641 = r45639 * r45640;
double r45642 = r45638 - r45641;
double r45643 = r45637 * r45637;
double r45644 = r45640 * r45640;
double r45645 = r45643 + r45644;
double r45646 = r45642 / r45645;
return r45646;
}



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