\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 1.4420118311925315 \cdot 10^{300}:\\
\;\;\;\;\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 r45828 = x_re;
double r45829 = y_re;
double r45830 = r45828 * r45829;
double r45831 = x_im;
double r45832 = y_im;
double r45833 = r45831 * r45832;
double r45834 = r45830 + r45833;
double r45835 = r45829 * r45829;
double r45836 = r45832 * r45832;
double r45837 = r45835 + r45836;
double r45838 = r45834 / r45837;
return r45838;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r45839 = x_re;
double r45840 = y_re;
double r45841 = r45839 * r45840;
double r45842 = x_im;
double r45843 = y_im;
double r45844 = r45842 * r45843;
double r45845 = r45841 + r45844;
double r45846 = r45840 * r45840;
double r45847 = r45843 * r45843;
double r45848 = r45846 + r45847;
double r45849 = r45845 / r45848;
double r45850 = -inf.0;
bool r45851 = r45849 <= r45850;
double r45852 = sqrt(r45848);
double r45853 = r45839 / r45852;
double r45854 = 1.4420118311925315e+300;
bool r45855 = r45849 <= r45854;
double r45856 = r45845 / r45852;
double r45857 = r45856 / r45852;
double r45858 = -1.0;
double r45859 = r45858 * r45839;
double r45860 = r45859 / r45852;
double r45861 = r45855 ? r45857 : r45860;
double r45862 = r45851 ? r45853 : r45861;
return r45862;
}



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 55.8
if -inf.0 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) < 1.4420118311925315e+300Initial program 11.8
rmApplied add-sqr-sqrt11.8
Applied associate-/r*11.7
if 1.4420118311925315e+300 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 63.5
rmApplied add-sqr-sqrt63.5
Applied associate-/r*63.5
Taylor expanded around -inf 59.5
Final simplification24.6
herbie shell --seed 2020024
(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))))