\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 r63227 = x_im;
double r63228 = y_re;
double r63229 = r63227 * r63228;
double r63230 = x_re;
double r63231 = y_im;
double r63232 = r63230 * r63231;
double r63233 = r63229 - r63232;
double r63234 = r63228 * r63228;
double r63235 = r63231 * r63231;
double r63236 = r63234 + r63235;
double r63237 = r63233 / r63236;
return r63237;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r63238 = x_im;
double r63239 = y_re;
double r63240 = r63238 * r63239;
double r63241 = x_re;
double r63242 = y_im;
double r63243 = r63241 * r63242;
double r63244 = r63240 - r63243;
double r63245 = r63239 * r63239;
double r63246 = r63242 * r63242;
double r63247 = r63245 + r63246;
double r63248 = sqrt(r63247);
double r63249 = r63244 / r63248;
double r63250 = r63249 / r63248;
return r63250;
}



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