\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\begin{array}{l}
\mathbf{if}\;\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im} \le 1.1631964723081969 \cdot 10^{+277}:\\
\;\;\;\;\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}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-x.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r1994667 = x_im;
double r1994668 = y_re;
double r1994669 = r1994667 * r1994668;
double r1994670 = x_re;
double r1994671 = y_im;
double r1994672 = r1994670 * r1994671;
double r1994673 = r1994669 - r1994672;
double r1994674 = r1994668 * r1994668;
double r1994675 = r1994671 * r1994671;
double r1994676 = r1994674 + r1994675;
double r1994677 = r1994673 / r1994676;
return r1994677;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1994678 = x_im;
double r1994679 = y_re;
double r1994680 = r1994678 * r1994679;
double r1994681 = x_re;
double r1994682 = y_im;
double r1994683 = r1994681 * r1994682;
double r1994684 = r1994680 - r1994683;
double r1994685 = r1994679 * r1994679;
double r1994686 = r1994682 * r1994682;
double r1994687 = r1994685 + r1994686;
double r1994688 = r1994684 / r1994687;
double r1994689 = 1.1631964723081969e+277;
bool r1994690 = r1994688 <= r1994689;
double r1994691 = sqrt(r1994687);
double r1994692 = r1994684 / r1994691;
double r1994693 = r1994692 / r1994691;
double r1994694 = -r1994681;
double r1994695 = r1994694 / r1994691;
double r1994696 = r1994690 ? r1994693 : r1994695;
return r1994696;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))) < 1.1631964723081969e+277Initial program 13.6
rmApplied add-sqr-sqrt13.6
Applied associate-/r*13.5
if 1.1631964723081969e+277 < (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 61.2
rmApplied add-sqr-sqrt61.2
Applied associate-/r*61.2
Taylor expanded around 0 59.9
Simplified59.9
Final simplification24.8
herbie shell --seed 2019129
(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))))