\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.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im} \le 4.737122355537421671534518653596175011386 \cdot 10^{285}:\\
\;\;\;\;\frac{\frac{x.re \cdot y.re + x.im \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 r34706 = x_re;
double r34707 = y_re;
double r34708 = r34706 * r34707;
double r34709 = x_im;
double r34710 = y_im;
double r34711 = r34709 * r34710;
double r34712 = r34708 + r34711;
double r34713 = r34707 * r34707;
double r34714 = r34710 * r34710;
double r34715 = r34713 + r34714;
double r34716 = r34712 / r34715;
return r34716;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r34717 = x_re;
double r34718 = y_re;
double r34719 = r34717 * r34718;
double r34720 = x_im;
double r34721 = y_im;
double r34722 = r34720 * r34721;
double r34723 = r34719 + r34722;
double r34724 = r34718 * r34718;
double r34725 = r34721 * r34721;
double r34726 = r34724 + r34725;
double r34727 = r34723 / r34726;
double r34728 = 4.7371223555374217e+285;
bool r34729 = r34727 <= r34728;
double r34730 = sqrt(r34726);
double r34731 = r34723 / r34730;
double r34732 = r34731 / r34730;
double r34733 = -r34717;
double r34734 = r34733 / r34730;
double r34735 = r34729 ? r34732 : r34734;
return r34735;
}



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))) < 4.7371223555374217e+285Initial program 13.7
rmApplied add-sqr-sqrt13.7
Applied associate-/r*13.6
if 4.7371223555374217e+285 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 62.6
rmApplied add-sqr-sqrt62.7
Applied associate-/r*62.6
Taylor expanded around -inf 60.2
Simplified60.2
Final simplification25.1
herbie shell --seed 2019323
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
:precision binary64
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))