\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 r56343 = x_im;
double r56344 = y_re;
double r56345 = r56343 * r56344;
double r56346 = x_re;
double r56347 = y_im;
double r56348 = r56346 * r56347;
double r56349 = r56345 - r56348;
double r56350 = r56344 * r56344;
double r56351 = r56347 * r56347;
double r56352 = r56350 + r56351;
double r56353 = r56349 / r56352;
return r56353;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r56354 = x_im;
double r56355 = y_re;
double r56356 = r56354 * r56355;
double r56357 = x_re;
double r56358 = y_im;
double r56359 = r56357 * r56358;
double r56360 = r56356 - r56359;
double r56361 = r56355 * r56355;
double r56362 = r56358 * r56358;
double r56363 = r56361 + r56362;
double r56364 = sqrt(r56363);
double r56365 = r56360 / r56364;
double r56366 = r56365 / r56364;
return r56366;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.8
rmApplied add-sqr-sqrt26.8
Applied associate-/r*26.7
Final simplification26.7
herbie shell --seed 2020020
(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))))