\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.7234357932591811 \cdot 10^{232}:\\
\;\;\;\;\frac{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.im \cdot x.im + y.re \cdot x.re}}}{\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 r115164 = x_re;
double r115165 = y_re;
double r115166 = r115164 * r115165;
double r115167 = x_im;
double r115168 = y_im;
double r115169 = r115167 * r115168;
double r115170 = r115166 + r115169;
double r115171 = r115165 * r115165;
double r115172 = r115168 * r115168;
double r115173 = r115171 + r115172;
double r115174 = r115170 / r115173;
return r115174;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r115175 = x_re;
double r115176 = y_re;
double r115177 = r115175 * r115176;
double r115178 = x_im;
double r115179 = y_im;
double r115180 = r115178 * r115179;
double r115181 = r115177 + r115180;
double r115182 = r115176 * r115176;
double r115183 = r115179 * r115179;
double r115184 = r115182 + r115183;
double r115185 = r115181 / r115184;
double r115186 = 3.723435793259181e+232;
bool r115187 = r115185 <= r115186;
double r115188 = 1.0;
double r115189 = sqrt(r115184);
double r115190 = r115179 * r115178;
double r115191 = r115176 * r115175;
double r115192 = r115190 + r115191;
double r115193 = r115189 / r115192;
double r115194 = r115188 / r115193;
double r115195 = r115194 / r115189;
double r115196 = -r115175;
double r115197 = r115196 / r115189;
double r115198 = r115187 ? r115195 : r115197;
return r115198;
}



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.723435793259181e+232Initial program 13.9
rmApplied add-sqr-sqrt13.9
Applied associate-/r*13.8
rmApplied clear-num13.8
Simplified13.8
if 3.723435793259181e+232 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 60.0
rmApplied add-sqr-sqrt60.0
Applied associate-/r*60.0
Taylor expanded around -inf 59.9
Simplified59.9
Final simplification25.8
herbie shell --seed 2020045
(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))))