\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{y.re \cdot x.im - y.im \cdot x.re}{\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 r2182660 = x_im;
double r2182661 = y_re;
double r2182662 = r2182660 * r2182661;
double r2182663 = x_re;
double r2182664 = y_im;
double r2182665 = r2182663 * r2182664;
double r2182666 = r2182662 - r2182665;
double r2182667 = r2182661 * r2182661;
double r2182668 = r2182664 * r2182664;
double r2182669 = r2182667 + r2182668;
double r2182670 = r2182666 / r2182669;
return r2182670;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2182671 = y_re;
double r2182672 = x_im;
double r2182673 = r2182671 * r2182672;
double r2182674 = y_im;
double r2182675 = x_re;
double r2182676 = r2182674 * r2182675;
double r2182677 = r2182673 - r2182676;
double r2182678 = r2182671 * r2182671;
double r2182679 = r2182674 * r2182674;
double r2182680 = r2182678 + r2182679;
double r2182681 = sqrt(r2182680);
double r2182682 = r2182677 / r2182681;
double r2182683 = r2182682 / r2182681;
return r2182683;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.5
rmApplied add-sqr-sqrt25.5
Applied associate-/r*25.5
Taylor expanded around -inf 25.5
Final simplification25.5
herbie shell --seed 2019119 +o rules:numerics
(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))))