\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 r1488655 = x_im;
double r1488656 = y_re;
double r1488657 = r1488655 * r1488656;
double r1488658 = x_re;
double r1488659 = y_im;
double r1488660 = r1488658 * r1488659;
double r1488661 = r1488657 - r1488660;
double r1488662 = r1488656 * r1488656;
double r1488663 = r1488659 * r1488659;
double r1488664 = r1488662 + r1488663;
double r1488665 = r1488661 / r1488664;
return r1488665;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1488666 = 1.0;
double r1488667 = y_re;
double r1488668 = r1488667 * r1488667;
double r1488669 = y_im;
double r1488670 = r1488669 * r1488669;
double r1488671 = r1488668 + r1488670;
double r1488672 = sqrt(r1488671);
double r1488673 = r1488666 / r1488672;
double r1488674 = x_im;
double r1488675 = r1488674 * r1488667;
double r1488676 = x_re;
double r1488677 = r1488676 * r1488669;
double r1488678 = r1488675 - r1488677;
double r1488679 = r1488678 / r1488672;
double r1488680 = r1488673 * r1488679;
return r1488680;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.8
rmApplied add-sqr-sqrt25.8
Applied *-un-lft-identity25.8
Applied times-frac25.8
Final simplification25.8
herbie shell --seed 2019155
(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))))