\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{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 5.93953377056499191 \cdot 10^{289}:\\
\;\;\;\;\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{-1 \cdot 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 r58628 = x_re;
double r58629 = y_re;
double r58630 = r58628 * r58629;
double r58631 = x_im;
double r58632 = y_im;
double r58633 = r58631 * r58632;
double r58634 = r58630 + r58633;
double r58635 = r58629 * r58629;
double r58636 = r58632 * r58632;
double r58637 = r58635 + r58636;
double r58638 = r58634 / r58637;
return r58638;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r58639 = x_re;
double r58640 = y_re;
double r58641 = r58639 * r58640;
double r58642 = x_im;
double r58643 = y_im;
double r58644 = r58642 * r58643;
double r58645 = r58641 + r58644;
double r58646 = r58640 * r58640;
double r58647 = r58643 * r58643;
double r58648 = r58646 + r58647;
double r58649 = r58645 / r58648;
double r58650 = -inf.0;
bool r58651 = r58649 <= r58650;
double r58652 = sqrt(r58648);
double r58653 = r58639 / r58652;
double r58654 = 5.939533770564992e+289;
bool r58655 = r58649 <= r58654;
double r58656 = r58645 / r58652;
double r58657 = r58656 / r58652;
double r58658 = -1.0;
double r58659 = r58658 * r58639;
double r58660 = r58659 / r58652;
double r58661 = r58655 ? r58657 : r58660;
double r58662 = r58651 ? r58653 : r58661;
return r58662;
}



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 50.1
if -inf.0 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) < 5.939533770564992e+289Initial program 12.3
rmApplied add-sqr-sqrt12.3
Applied associate-/r*12.2
if 5.939533770564992e+289 < (/ (+ (* 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
Taylor expanded around -inf 60.0
Final simplification25.3
herbie shell --seed 2020021
(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))))