\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} \le 6.142565536588697 \cdot 10^{+301}:\\
\;\;\;\;\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{x.im \cdot y.im + x.re \cdot y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot x.re\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r6730025 = x_re;
double r6730026 = y_re;
double r6730027 = r6730025 * r6730026;
double r6730028 = x_im;
double r6730029 = y_im;
double r6730030 = r6730028 * r6730029;
double r6730031 = r6730027 + r6730030;
double r6730032 = r6730026 * r6730026;
double r6730033 = r6730029 * r6730029;
double r6730034 = r6730032 + r6730033;
double r6730035 = r6730031 / r6730034;
return r6730035;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r6730036 = x_im;
double r6730037 = y_im;
double r6730038 = r6730036 * r6730037;
double r6730039 = x_re;
double r6730040 = y_re;
double r6730041 = r6730039 * r6730040;
double r6730042 = r6730038 + r6730041;
double r6730043 = r6730040 * r6730040;
double r6730044 = r6730037 * r6730037;
double r6730045 = r6730043 + r6730044;
double r6730046 = r6730042 / r6730045;
double r6730047 = 6.142565536588697e+301;
bool r6730048 = r6730046 <= r6730047;
double r6730049 = 1.0;
double r6730050 = sqrt(r6730045);
double r6730051 = r6730049 / r6730050;
double r6730052 = r6730042 / r6730050;
double r6730053 = r6730051 * r6730052;
double r6730054 = -1.0;
double r6730055 = r6730054 / r6730050;
double r6730056 = r6730055 * r6730039;
double r6730057 = r6730048 ? r6730053 : r6730056;
return r6730057;
}



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))) < 6.142565536588697e+301Initial program 14.1
rmApplied add-sqr-sqrt14.1
Applied *-un-lft-identity14.1
Applied times-frac14.1
if 6.142565536588697e+301 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 62.2
rmApplied add-sqr-sqrt62.2
Applied *-un-lft-identity62.2
Applied times-frac62.2
Taylor expanded around -inf 60.0
Simplified60.0
Final simplification25.1
herbie shell --seed 2019124
(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))))