\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}\;y.re \le -2.9064590122309793 \cdot 10^{+107}:\\
\;\;\;\;\frac{-x.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{else}:\\
\;\;\;\;\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}}\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r3469494 = x_re;
double r3469495 = y_re;
double r3469496 = r3469494 * r3469495;
double r3469497 = x_im;
double r3469498 = y_im;
double r3469499 = r3469497 * r3469498;
double r3469500 = r3469496 + r3469499;
double r3469501 = r3469495 * r3469495;
double r3469502 = r3469498 * r3469498;
double r3469503 = r3469501 + r3469502;
double r3469504 = r3469500 / r3469503;
return r3469504;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r3469505 = y_re;
double r3469506 = -2.9064590122309793e+107;
bool r3469507 = r3469505 <= r3469506;
double r3469508 = x_re;
double r3469509 = -r3469508;
double r3469510 = r3469505 * r3469505;
double r3469511 = y_im;
double r3469512 = r3469511 * r3469511;
double r3469513 = r3469510 + r3469512;
double r3469514 = sqrt(r3469513);
double r3469515 = r3469509 / r3469514;
double r3469516 = x_im;
double r3469517 = r3469516 * r3469511;
double r3469518 = r3469508 * r3469505;
double r3469519 = r3469517 + r3469518;
double r3469520 = r3469519 / r3469514;
double r3469521 = r3469520 / r3469514;
double r3469522 = r3469507 ? r3469515 : r3469521;
return r3469522;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if y.re < -2.9064590122309793e+107Initial program 41.1
rmApplied add-sqr-sqrt41.1
Applied associate-/r*41.1
Taylor expanded around -inf 40.4
Simplified40.4
if -2.9064590122309793e+107 < y.re Initial program 22.6
rmApplied add-sqr-sqrt22.6
Applied associate-/r*22.5
Final simplification25.6
herbie shell --seed 2019104
(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))))