\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{x.im \cdot y.re - x.re \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 r3042508 = x_im;
double r3042509 = y_re;
double r3042510 = r3042508 * r3042509;
double r3042511 = x_re;
double r3042512 = y_im;
double r3042513 = r3042511 * r3042512;
double r3042514 = r3042510 - r3042513;
double r3042515 = r3042509 * r3042509;
double r3042516 = r3042512 * r3042512;
double r3042517 = r3042515 + r3042516;
double r3042518 = r3042514 / r3042517;
return r3042518;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r3042519 = 1.0;
double r3042520 = y_re;
double r3042521 = r3042520 * r3042520;
double r3042522 = y_im;
double r3042523 = r3042522 * r3042522;
double r3042524 = r3042521 + r3042523;
double r3042525 = sqrt(r3042524);
double r3042526 = r3042519 / r3042525;
double r3042527 = x_im;
double r3042528 = r3042527 * r3042520;
double r3042529 = x_re;
double r3042530 = r3042529 * r3042522;
double r3042531 = r3042528 - r3042530;
double r3042532 = r3042531 / r3042525;
double r3042533 = r3042526 * r3042532;
return r3042533;
}



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 *-un-lft-identity25.7
Applied times-frac25.7
Final simplification25.7
herbie shell --seed 2019162
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
(/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))