\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 3.891935508509236260667480413287773623996 \cdot 10^{303}:\\
\;\;\;\;\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 r3084739 = x_re;
double r3084740 = y_re;
double r3084741 = r3084739 * r3084740;
double r3084742 = x_im;
double r3084743 = y_im;
double r3084744 = r3084742 * r3084743;
double r3084745 = r3084741 + r3084744;
double r3084746 = r3084740 * r3084740;
double r3084747 = r3084743 * r3084743;
double r3084748 = r3084746 + r3084747;
double r3084749 = r3084745 / r3084748;
return r3084749;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r3084750 = x_im;
double r3084751 = y_im;
double r3084752 = r3084750 * r3084751;
double r3084753 = x_re;
double r3084754 = y_re;
double r3084755 = r3084753 * r3084754;
double r3084756 = r3084752 + r3084755;
double r3084757 = r3084754 * r3084754;
double r3084758 = r3084751 * r3084751;
double r3084759 = r3084757 + r3084758;
double r3084760 = r3084756 / r3084759;
double r3084761 = 3.891935508509236e+303;
bool r3084762 = r3084760 <= r3084761;
double r3084763 = sqrt(r3084759);
double r3084764 = r3084756 / r3084763;
double r3084765 = r3084764 / r3084763;
double r3084766 = -r3084750;
double r3084767 = r3084766 / r3084763;
double r3084768 = r3084762 ? r3084765 : r3084767;
return r3084768;
}



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))) < 3.891935508509236e+303Initial program 14.0
rmApplied add-sqr-sqrt14.0
Applied associate-/r*13.9
Taylor expanded around inf 13.9
if 3.891935508509236e+303 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 63.7
rmApplied add-sqr-sqrt63.7
Applied associate-/r*63.7
Taylor expanded around inf 63.7
Taylor expanded around -inf 60.4
Simplified60.4
Final simplification25.0
herbie shell --seed 2019172
(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))))