\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{x.im \cdot y.im + x.re \cdot y.re}{\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 r2891644 = x_re;
double r2891645 = y_re;
double r2891646 = r2891644 * r2891645;
double r2891647 = x_im;
double r2891648 = y_im;
double r2891649 = r2891647 * r2891648;
double r2891650 = r2891646 + r2891649;
double r2891651 = r2891645 * r2891645;
double r2891652 = r2891648 * r2891648;
double r2891653 = r2891651 + r2891652;
double r2891654 = r2891650 / r2891653;
return r2891654;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2891655 = x_im;
double r2891656 = y_im;
double r2891657 = r2891655 * r2891656;
double r2891658 = x_re;
double r2891659 = y_re;
double r2891660 = r2891658 * r2891659;
double r2891661 = r2891657 + r2891660;
double r2891662 = r2891659 * r2891659;
double r2891663 = r2891656 * r2891656;
double r2891664 = r2891662 + r2891663;
double r2891665 = sqrt(r2891664);
double r2891666 = r2891661 / r2891665;
double r2891667 = r2891666 / r2891665;
return r2891667;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.7
rmApplied add-sqr-sqrt26.7
Applied associate-/r*26.6
Final simplification26.6
herbie shell --seed 2019168
(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))))