\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{1}{y.re \cdot y.re + y.im \cdot y.im} \cdot \left(x.im \cdot y.im + x.re \cdot y.re\right)double f(double x_re, double x_im, double y_re, double y_im) {
double r5576787 = x_re;
double r5576788 = y_re;
double r5576789 = r5576787 * r5576788;
double r5576790 = x_im;
double r5576791 = y_im;
double r5576792 = r5576790 * r5576791;
double r5576793 = r5576789 + r5576792;
double r5576794 = r5576788 * r5576788;
double r5576795 = r5576791 * r5576791;
double r5576796 = r5576794 + r5576795;
double r5576797 = r5576793 / r5576796;
return r5576797;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r5576798 = 1.0;
double r5576799 = y_re;
double r5576800 = r5576799 * r5576799;
double r5576801 = y_im;
double r5576802 = r5576801 * r5576801;
double r5576803 = r5576800 + r5576802;
double r5576804 = r5576798 / r5576803;
double r5576805 = x_im;
double r5576806 = r5576805 * r5576801;
double r5576807 = x_re;
double r5576808 = r5576807 * r5576799;
double r5576809 = r5576806 + r5576808;
double r5576810 = r5576804 * r5576809;
return r5576810;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.3
rmApplied div-inv25.5
Final simplification25.5
herbie shell --seed 2019125
(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))))