\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{x.im \cdot y.im + x.re \cdot y.re}{\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 r1360795 = x_re;
double r1360796 = y_re;
double r1360797 = r1360795 * r1360796;
double r1360798 = x_im;
double r1360799 = y_im;
double r1360800 = r1360798 * r1360799;
double r1360801 = r1360797 + r1360800;
double r1360802 = r1360796 * r1360796;
double r1360803 = r1360799 * r1360799;
double r1360804 = r1360802 + r1360803;
double r1360805 = r1360801 / r1360804;
return r1360805;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1360806 = 1.0;
double r1360807 = y_re;
double r1360808 = r1360807 * r1360807;
double r1360809 = y_im;
double r1360810 = r1360809 * r1360809;
double r1360811 = r1360808 + r1360810;
double r1360812 = sqrt(r1360811);
double r1360813 = r1360806 / r1360812;
double r1360814 = x_im;
double r1360815 = r1360814 * r1360809;
double r1360816 = x_re;
double r1360817 = r1360816 * r1360807;
double r1360818 = r1360815 + r1360817;
double r1360819 = r1360818 / r1360812;
double r1360820 = r1360813 * r1360819;
return r1360820;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.7
rmApplied add-sqr-sqrt25.7
Applied associate-/r*25.7
rmApplied *-un-lft-identity25.7
Applied associate-/r*25.7
Simplified25.7
rmApplied add-sqr-sqrt25.8
Applied add-sqr-sqrt25.9
Applied *-un-lft-identity25.9
Applied times-frac26.0
Applied times-frac26.0
Simplified25.9
Simplified25.7
Final simplification25.7
herbie shell --seed 2019152
(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))))