\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} = -\infty:\\
\;\;\;\;\frac{x.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{elif}\;\frac{x.im \cdot y.im + x.re \cdot y.re}{y.re \cdot y.re + y.im \cdot y.im} \le 1.126077854837793543272902488688401092988 \cdot 10^{280}:\\
\;\;\;\;\frac{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{x.im \cdot y.im + x.re \cdot y.re}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{else}:\\
\;\;\;\;\frac{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 r42410 = x_re;
double r42411 = y_re;
double r42412 = r42410 * r42411;
double r42413 = x_im;
double r42414 = y_im;
double r42415 = r42413 * r42414;
double r42416 = r42412 + r42415;
double r42417 = r42411 * r42411;
double r42418 = r42414 * r42414;
double r42419 = r42417 + r42418;
double r42420 = r42416 / r42419;
return r42420;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r42421 = x_im;
double r42422 = y_im;
double r42423 = r42421 * r42422;
double r42424 = x_re;
double r42425 = y_re;
double r42426 = r42424 * r42425;
double r42427 = r42423 + r42426;
double r42428 = r42425 * r42425;
double r42429 = r42422 * r42422;
double r42430 = r42428 + r42429;
double r42431 = r42427 / r42430;
double r42432 = -inf.0;
bool r42433 = r42431 <= r42432;
double r42434 = sqrt(r42430);
double r42435 = r42421 / r42434;
double r42436 = 1.1260778548377935e+280;
bool r42437 = r42431 <= r42436;
double r42438 = 1.0;
double r42439 = r42434 / r42427;
double r42440 = r42438 / r42439;
double r42441 = r42440 / r42434;
double r42442 = r42424 / r42434;
double r42443 = r42437 ? r42441 : r42442;
double r42444 = r42433 ? r42435 : r42443;
return r42444;
}



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
Simplified64.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.1260778548377935e+280Initial program 11.8
rmApplied add-sqr-sqrt11.8
Applied associate-/r*11.7
Simplified11.7
rmApplied clear-num11.8
Simplified11.8
if 1.1260778548377935e+280 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 62.8
rmApplied add-sqr-sqrt62.8
Applied associate-/r*62.8
Simplified62.8
Taylor expanded around 0 60.1
Final simplification25.4
herbie shell --seed 2019196
(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))))