\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 3.29064580259523516 \cdot 10^{293}:\\
\;\;\;\;\frac{x.re \cdot y.re + x.im \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im} \cdot \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 r104937 = x_re;
double r104938 = y_re;
double r104939 = r104937 * r104938;
double r104940 = x_im;
double r104941 = y_im;
double r104942 = r104940 * r104941;
double r104943 = r104939 + r104942;
double r104944 = r104938 * r104938;
double r104945 = r104941 * r104941;
double r104946 = r104944 + r104945;
double r104947 = r104943 / r104946;
return r104947;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r104948 = x_re;
double r104949 = y_re;
double r104950 = r104948 * r104949;
double r104951 = x_im;
double r104952 = y_im;
double r104953 = r104951 * r104952;
double r104954 = r104950 + r104953;
double r104955 = r104949 * r104949;
double r104956 = r104952 * r104952;
double r104957 = r104955 + r104956;
double r104958 = r104954 / r104957;
double r104959 = 3.290645802595235e+293;
bool r104960 = r104958 <= r104959;
double r104961 = sqrt(r104957);
double r104962 = r104961 * r104961;
double r104963 = r104954 / r104962;
double r104964 = -r104948;
double r104965 = r104964 / r104961;
double r104966 = r104960 ? r104963 : r104965;
return r104966;
}



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.290645802595235e+293Initial program 14.4
rmApplied add-sqr-sqrt14.4
if 3.290645802595235e+293 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 63.2
rmApplied add-sqr-sqrt63.2
Applied associate-/r*63.2
Taylor expanded around -inf 60.2
Simplified60.2
Final simplification25.7
herbie shell --seed 2020046
(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))))