\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 1.6923274718789566 \cdot 10^{295}:\\
\;\;\;\;\frac{\frac{x.re \cdot y.re + x.im \cdot y.im}{\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{-1 \cdot 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 r98024 = x_re;
double r98025 = y_re;
double r98026 = r98024 * r98025;
double r98027 = x_im;
double r98028 = y_im;
double r98029 = r98027 * r98028;
double r98030 = r98026 + r98029;
double r98031 = r98025 * r98025;
double r98032 = r98028 * r98028;
double r98033 = r98031 + r98032;
double r98034 = r98030 / r98033;
return r98034;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r98035 = x_re;
double r98036 = y_re;
double r98037 = r98035 * r98036;
double r98038 = x_im;
double r98039 = y_im;
double r98040 = r98038 * r98039;
double r98041 = r98037 + r98040;
double r98042 = r98036 * r98036;
double r98043 = r98039 * r98039;
double r98044 = r98042 + r98043;
double r98045 = r98041 / r98044;
double r98046 = 1.6923274718789566e+295;
bool r98047 = r98045 <= r98046;
double r98048 = sqrt(r98044);
double r98049 = r98041 / r98048;
double r98050 = r98049 / r98048;
double r98051 = -1.0;
double r98052 = r98051 * r98035;
double r98053 = r98052 / r98048;
double r98054 = r98047 ? r98050 : r98053;
return r98054;
}



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))) < 1.6923274718789566e+295Initial program 14.3
rmApplied add-sqr-sqrt14.3
Applied associate-/r*14.2
if 1.6923274718789566e+295 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 63.3
rmApplied add-sqr-sqrt63.3
Applied associate-/r*63.3
Taylor expanded around -inf 60.1
Final simplification25.8
herbie shell --seed 2020034
(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))))