\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.im \cdot y.im + x.re \cdot y.re}{y.re \cdot y.re + y.im \cdot y.im} = -\infty:\\
\;\;\;\;\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 r1141062 = x_re;
double r1141063 = y_re;
double r1141064 = r1141062 * r1141063;
double r1141065 = x_im;
double r1141066 = y_im;
double r1141067 = r1141065 * r1141066;
double r1141068 = r1141064 + r1141067;
double r1141069 = r1141063 * r1141063;
double r1141070 = r1141066 * r1141066;
double r1141071 = r1141069 + r1141070;
double r1141072 = r1141068 / r1141071;
return r1141072;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1141073 = x_im;
double r1141074 = y_im;
double r1141075 = r1141073 * r1141074;
double r1141076 = x_re;
double r1141077 = y_re;
double r1141078 = r1141076 * r1141077;
double r1141079 = r1141075 + r1141078;
double r1141080 = r1141077 * r1141077;
double r1141081 = r1141074 * r1141074;
double r1141082 = r1141080 + r1141081;
double r1141083 = r1141079 / r1141082;
double r1141084 = -inf.0;
bool r1141085 = r1141083 <= r1141084;
double r1141086 = -r1141076;
double r1141087 = sqrt(r1141082);
double r1141088 = r1141086 / r1141087;
double r1141089 = r1141079 / r1141087;
double r1141090 = r1141089 / r1141087;
double r1141091 = r1141085 ? r1141088 : r1141090;
return r1141091;
}



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))) < -inf.0Initial program 60.5
rmApplied add-sqr-sqrt60.5
Applied associate-/r*60.5
Taylor expanded around -inf 49.4
Simplified49.4
if -inf.0 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 24.8
rmApplied add-sqr-sqrt24.8
Applied associate-/r*24.8
Final simplification25.7
herbie shell --seed 2019153
(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))))