\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\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 r64805 = x_im;
double r64806 = y_re;
double r64807 = r64805 * r64806;
double r64808 = x_re;
double r64809 = y_im;
double r64810 = r64808 * r64809;
double r64811 = r64807 - r64810;
double r64812 = r64806 * r64806;
double r64813 = r64809 * r64809;
double r64814 = r64812 + r64813;
double r64815 = r64811 / r64814;
return r64815;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r64816 = x_im;
double r64817 = y_re;
double r64818 = r64816 * r64817;
double r64819 = x_re;
double r64820 = y_im;
double r64821 = r64819 * r64820;
double r64822 = r64818 - r64821;
double r64823 = r64817 * r64817;
double r64824 = r64820 * r64820;
double r64825 = r64823 + r64824;
double r64826 = sqrt(r64825);
double r64827 = r64822 / r64826;
double r64828 = r64827 / r64826;
return r64828;
}



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.9
Final simplification25.9
herbie shell --seed 2019208
(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))))