\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\left(x.im \cdot y.re - x.re \cdot y.im\right) \cdot \frac{1}{\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 r110383 = x_im;
double r110384 = y_re;
double r110385 = r110383 * r110384;
double r110386 = x_re;
double r110387 = y_im;
double r110388 = r110386 * r110387;
double r110389 = r110385 - r110388;
double r110390 = r110384 * r110384;
double r110391 = r110387 * r110387;
double r110392 = r110390 + r110391;
double r110393 = r110389 / r110392;
return r110393;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r110394 = x_im;
double r110395 = y_re;
double r110396 = r110394 * r110395;
double r110397 = x_re;
double r110398 = y_im;
double r110399 = r110397 * r110398;
double r110400 = r110396 - r110399;
double r110401 = 1.0;
double r110402 = r110395 * r110395;
double r110403 = r110398 * r110398;
double r110404 = r110402 + r110403;
double r110405 = sqrt(r110404);
double r110406 = r110401 / r110405;
double r110407 = r110400 * r110406;
double r110408 = r110407 / r110405;
return r110408;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.2
rmApplied add-sqr-sqrt26.2
Applied associate-/r*26.2
rmApplied div-inv26.2
Final simplification26.2
herbie shell --seed 2020021
(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))))