\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.318211213550137477706442015578382060034 \cdot 10^{283}:\\
\;\;\;\;\frac{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{x.re \cdot y.re + x.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 r39245 = x_re;
double r39246 = y_re;
double r39247 = r39245 * r39246;
double r39248 = x_im;
double r39249 = y_im;
double r39250 = r39248 * r39249;
double r39251 = r39247 + r39250;
double r39252 = r39246 * r39246;
double r39253 = r39249 * r39249;
double r39254 = r39252 + r39253;
double r39255 = r39251 / r39254;
return r39255;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r39256 = x_re;
double r39257 = y_re;
double r39258 = r39256 * r39257;
double r39259 = x_im;
double r39260 = y_im;
double r39261 = r39259 * r39260;
double r39262 = r39258 + r39261;
double r39263 = r39257 * r39257;
double r39264 = r39260 * r39260;
double r39265 = r39263 + r39264;
double r39266 = r39262 / r39265;
double r39267 = 3.3182112135501375e+283;
bool r39268 = r39266 <= r39267;
double r39269 = 1.0;
double r39270 = sqrt(r39265);
double r39271 = r39270 / r39262;
double r39272 = r39269 / r39271;
double r39273 = r39272 / r39270;
double r39274 = -r39256;
double r39275 = r39274 / r39270;
double r39276 = r39268 ? r39273 : r39275;
return r39276;
}



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.3182112135501375e+283Initial program 14.3
rmApplied add-sqr-sqrt14.3
Applied associate-/r*14.3
rmApplied clear-num14.3
if 3.3182112135501375e+283 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 62.6
rmApplied add-sqr-sqrt62.6
Applied associate-/r*62.6
Taylor expanded around -inf 60.3
Simplified60.3
Final simplification25.8
herbie shell --seed 2019322
(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))))