\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 3.891935508509236260667480413287773623996 \cdot 10^{303}:\\
\;\;\;\;\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}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-x.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 r2452290 = x_re;
double r2452291 = y_re;
double r2452292 = r2452290 * r2452291;
double r2452293 = x_im;
double r2452294 = y_im;
double r2452295 = r2452293 * r2452294;
double r2452296 = r2452292 + r2452295;
double r2452297 = r2452291 * r2452291;
double r2452298 = r2452294 * r2452294;
double r2452299 = r2452297 + r2452298;
double r2452300 = r2452296 / r2452299;
return r2452300;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2452301 = x_im;
double r2452302 = y_im;
double r2452303 = r2452301 * r2452302;
double r2452304 = x_re;
double r2452305 = y_re;
double r2452306 = r2452304 * r2452305;
double r2452307 = r2452303 + r2452306;
double r2452308 = r2452305 * r2452305;
double r2452309 = r2452302 * r2452302;
double r2452310 = r2452308 + r2452309;
double r2452311 = r2452307 / r2452310;
double r2452312 = 3.891935508509236e+303;
bool r2452313 = r2452311 <= r2452312;
double r2452314 = sqrt(r2452310);
double r2452315 = r2452307 / r2452314;
double r2452316 = r2452315 / r2452314;
double r2452317 = -r2452301;
double r2452318 = r2452317 / r2452314;
double r2452319 = r2452313 ? r2452316 : r2452318;
return r2452319;
}



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.891935508509236e+303Initial program 14.0
rmApplied add-sqr-sqrt14.0
Applied associate-/r*13.9
Taylor expanded around inf 13.9
if 3.891935508509236e+303 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 63.7
rmApplied add-sqr-sqrt63.7
Applied associate-/r*63.7
Taylor expanded around inf 63.7
Taylor expanded around -inf 60.4
Simplified60.4
Final simplification25.0
herbie shell --seed 2019172
(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))))