\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 r61756 = x_im;
double r61757 = y_re;
double r61758 = r61756 * r61757;
double r61759 = x_re;
double r61760 = y_im;
double r61761 = r61759 * r61760;
double r61762 = r61758 - r61761;
double r61763 = r61757 * r61757;
double r61764 = r61760 * r61760;
double r61765 = r61763 + r61764;
double r61766 = r61762 / r61765;
return r61766;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r61767 = x_im;
double r61768 = y_re;
double r61769 = r61767 * r61768;
double r61770 = x_re;
double r61771 = y_im;
double r61772 = r61770 * r61771;
double r61773 = r61769 - r61772;
double r61774 = r61768 * r61768;
double r61775 = r61771 * r61771;
double r61776 = r61774 + r61775;
double r61777 = r61773 / r61776;
return r61777;
}



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
rmApplied add-sqr-sqrt25.9
Applied associate-/r*25.8
rmApplied div-inv25.8
Applied associate-/l*25.9
Simplified25.9
Final simplification25.9
herbie shell --seed 2020036
(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))))