\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 7.355127360692946109502946832371947729711 \cdot 10^{283}:\\
\;\;\;\;\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{-1 \cdot 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 r53152 = x_re;
double r53153 = y_re;
double r53154 = r53152 * r53153;
double r53155 = x_im;
double r53156 = y_im;
double r53157 = r53155 * r53156;
double r53158 = r53154 + r53157;
double r53159 = r53153 * r53153;
double r53160 = r53156 * r53156;
double r53161 = r53159 + r53160;
double r53162 = r53158 / r53161;
return r53162;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r53163 = x_re;
double r53164 = y_re;
double r53165 = r53163 * r53164;
double r53166 = x_im;
double r53167 = y_im;
double r53168 = r53166 * r53167;
double r53169 = r53165 + r53168;
double r53170 = r53164 * r53164;
double r53171 = r53167 * r53167;
double r53172 = r53170 + r53171;
double r53173 = r53169 / r53172;
double r53174 = 7.355127360692946e+283;
bool r53175 = r53173 <= r53174;
double r53176 = sqrt(r53172);
double r53177 = r53169 / r53176;
double r53178 = r53177 / r53176;
double r53179 = -1.0;
double r53180 = r53179 * r53163;
double r53181 = r53180 / r53176;
double r53182 = r53175 ? r53178 : r53181;
return r53182;
}



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))) < 7.355127360692946e+283Initial program 14.2
rmApplied add-sqr-sqrt14.2
Applied associate-/r*14.1
if 7.355127360692946e+283 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 62.9
rmApplied add-sqr-sqrt62.9
Applied associate-/r*62.9
Taylor expanded around -inf 59.8
Final simplification25.4
herbie shell --seed 2020001
(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))))