\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} = -\infty:\\
\;\;\;\;\frac{-1 \cdot x.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{elif}\;\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im} \le 1.3102343460576409 \cdot 10^{296}:\\
\;\;\;\;\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{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 r68352 = x_re;
double r68353 = y_re;
double r68354 = r68352 * r68353;
double r68355 = x_im;
double r68356 = y_im;
double r68357 = r68355 * r68356;
double r68358 = r68354 + r68357;
double r68359 = r68353 * r68353;
double r68360 = r68356 * r68356;
double r68361 = r68359 + r68360;
double r68362 = r68358 / r68361;
return r68362;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r68363 = x_re;
double r68364 = y_re;
double r68365 = r68363 * r68364;
double r68366 = x_im;
double r68367 = y_im;
double r68368 = r68366 * r68367;
double r68369 = r68365 + r68368;
double r68370 = r68364 * r68364;
double r68371 = r68367 * r68367;
double r68372 = r68370 + r68371;
double r68373 = r68369 / r68372;
double r68374 = -inf.0;
bool r68375 = r68373 <= r68374;
double r68376 = -1.0;
double r68377 = r68376 * r68363;
double r68378 = sqrt(r68372);
double r68379 = r68377 / r68378;
double r68380 = 1.3102343460576409e+296;
bool r68381 = r68373 <= r68380;
double r68382 = r68369 / r68378;
double r68383 = r68382 / r68378;
double r68384 = r68366 / r68378;
double r68385 = r68381 ? r68383 : r68384;
double r68386 = r68375 ? r68379 : r68385;
return r68386;
}



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))) < -inf.0Initial program 64.0
rmApplied add-sqr-sqrt64.0
Applied associate-/r*64.0
Taylor expanded around -inf 52.5
if -inf.0 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) < 1.3102343460576409e+296Initial program 11.2
rmApplied add-sqr-sqrt11.2
Applied associate-/r*11.1
if 1.3102343460576409e+296 < (/ (+ (* 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 0 60.3
Final simplification24.7
herbie shell --seed 2020089
(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))))