\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 r2892413 = x_re;
double r2892414 = y_re;
double r2892415 = r2892413 * r2892414;
double r2892416 = x_im;
double r2892417 = y_im;
double r2892418 = r2892416 * r2892417;
double r2892419 = r2892415 + r2892418;
double r2892420 = r2892414 * r2892414;
double r2892421 = r2892417 * r2892417;
double r2892422 = r2892420 + r2892421;
double r2892423 = r2892419 / r2892422;
return r2892423;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2892424 = x_im;
double r2892425 = y_im;
double r2892426 = r2892424 * r2892425;
double r2892427 = x_re;
double r2892428 = y_re;
double r2892429 = r2892427 * r2892428;
double r2892430 = r2892426 + r2892429;
double r2892431 = r2892428 * r2892428;
double r2892432 = r2892425 * r2892425;
double r2892433 = r2892431 + r2892432;
double r2892434 = r2892430 / r2892433;
double r2892435 = 3.891935508509236e+303;
bool r2892436 = r2892434 <= r2892435;
double r2892437 = sqrt(r2892433);
double r2892438 = r2892430 / r2892437;
double r2892439 = r2892438 / r2892437;
double r2892440 = -r2892424;
double r2892441 = r2892440 / r2892437;
double r2892442 = r2892436 ? r2892439 : r2892441;
return r2892442;
}



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))))