\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 r3442003 = x_re;
double r3442004 = y_re;
double r3442005 = r3442003 * r3442004;
double r3442006 = x_im;
double r3442007 = y_im;
double r3442008 = r3442006 * r3442007;
double r3442009 = r3442005 + r3442008;
double r3442010 = r3442004 * r3442004;
double r3442011 = r3442007 * r3442007;
double r3442012 = r3442010 + r3442011;
double r3442013 = r3442009 / r3442012;
return r3442013;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r3442014 = x_im;
double r3442015 = y_im;
double r3442016 = r3442014 * r3442015;
double r3442017 = x_re;
double r3442018 = y_re;
double r3442019 = r3442017 * r3442018;
double r3442020 = r3442016 + r3442019;
double r3442021 = r3442018 * r3442018;
double r3442022 = r3442015 * r3442015;
double r3442023 = r3442021 + r3442022;
double r3442024 = sqrt(r3442023);
double r3442025 = r3442020 / r3442024;
double r3442026 = r3442025 / r3442024;
return r3442026;
}



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.7
Final simplification26.7
herbie shell --seed 2019169
(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))))