\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 1.728464397415736153089988456136233162691 \cdot 10^{95}:\\
\;\;\;\;\frac{\left(x.re \cdot y.re + x.im \cdot y.im\right) \cdot \frac{1}{\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.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 r69022 = x_re;
double r69023 = y_re;
double r69024 = r69022 * r69023;
double r69025 = x_im;
double r69026 = y_im;
double r69027 = r69025 * r69026;
double r69028 = r69024 + r69027;
double r69029 = r69023 * r69023;
double r69030 = r69026 * r69026;
double r69031 = r69029 + r69030;
double r69032 = r69028 / r69031;
return r69032;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r69033 = y_re;
double r69034 = 1.7284643974157362e+95;
bool r69035 = r69033 <= r69034;
double r69036 = x_re;
double r69037 = r69036 * r69033;
double r69038 = x_im;
double r69039 = y_im;
double r69040 = r69038 * r69039;
double r69041 = r69037 + r69040;
double r69042 = 1.0;
double r69043 = r69033 * r69033;
double r69044 = r69039 * r69039;
double r69045 = r69043 + r69044;
double r69046 = sqrt(r69045);
double r69047 = r69042 / r69046;
double r69048 = r69041 * r69047;
double r69049 = r69048 / r69046;
double r69050 = r69036 / r69046;
double r69051 = r69035 ? r69049 : r69050;
return r69051;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if y.re < 1.7284643974157362e+95Initial program 23.0
rmApplied add-sqr-sqrt23.0
Applied associate-/r*22.9
rmApplied div-inv23.0
if 1.7284643974157362e+95 < y.re Initial program 39.0
rmApplied add-sqr-sqrt39.0
Applied associate-/r*39.0
Taylor expanded around inf 38.3
Final simplification25.9
herbie shell --seed 2019209
(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))))