\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\begin{array}{l}
\mathbf{if}\;\frac{x.im \cdot y.im + x.re \cdot y.re}{y.re \cdot y.re + y.im \cdot y.im} \le 5.836032336515321 \cdot 10^{+282}:\\
\;\;\;\;\frac{\frac{x.im \cdot y.im + x.re \cdot y.re}{\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.im}{\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 r1754852 = x_re;
double r1754853 = y_re;
double r1754854 = r1754852 * r1754853;
double r1754855 = x_im;
double r1754856 = y_im;
double r1754857 = r1754855 * r1754856;
double r1754858 = r1754854 + r1754857;
double r1754859 = r1754853 * r1754853;
double r1754860 = r1754856 * r1754856;
double r1754861 = r1754859 + r1754860;
double r1754862 = r1754858 / r1754861;
return r1754862;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1754863 = x_im;
double r1754864 = y_im;
double r1754865 = r1754863 * r1754864;
double r1754866 = x_re;
double r1754867 = y_re;
double r1754868 = r1754866 * r1754867;
double r1754869 = r1754865 + r1754868;
double r1754870 = r1754867 * r1754867;
double r1754871 = r1754864 * r1754864;
double r1754872 = r1754870 + r1754871;
double r1754873 = r1754869 / r1754872;
double r1754874 = 5.836032336515321e+282;
bool r1754875 = r1754873 <= r1754874;
double r1754876 = sqrt(r1754872);
double r1754877 = r1754869 / r1754876;
double r1754878 = r1754877 / r1754876;
double r1754879 = r1754863 / r1754876;
double r1754880 = r1754875 ? r1754878 : r1754879;
return r1754880;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) < 5.836032336515321e+282Initial program 14.1
rmApplied add-sqr-sqrt14.1
Applied associate-/r*14.0
if 5.836032336515321e+282 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 61.0
rmApplied add-sqr-sqrt61.0
Applied associate-/r*61.0
Taylor expanded around 0 60.2
Final simplification25.7
herbie shell --seed 2019149
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))