\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\begin{array}{l}
\mathbf{if}\;x.re \le 2.96629785101132302 \cdot 10^{277}:\\
\;\;\;\;\frac{\frac{x.im \cdot y.re - x.re \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.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 r120837 = x_im;
double r120838 = y_re;
double r120839 = r120837 * r120838;
double r120840 = x_re;
double r120841 = y_im;
double r120842 = r120840 * r120841;
double r120843 = r120839 - r120842;
double r120844 = r120838 * r120838;
double r120845 = r120841 * r120841;
double r120846 = r120844 + r120845;
double r120847 = r120843 / r120846;
return r120847;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r120848 = x_re;
double r120849 = 2.966297851011323e+277;
bool r120850 = r120848 <= r120849;
double r120851 = x_im;
double r120852 = y_re;
double r120853 = r120851 * r120852;
double r120854 = y_im;
double r120855 = r120848 * r120854;
double r120856 = r120853 - r120855;
double r120857 = r120852 * r120852;
double r120858 = r120854 * r120854;
double r120859 = r120857 + r120858;
double r120860 = sqrt(r120859);
double r120861 = r120856 / r120860;
double r120862 = r120861 / r120860;
double r120863 = -r120848;
double r120864 = r120863 / r120860;
double r120865 = r120850 ? r120862 : r120864;
return r120865;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if x.re < 2.966297851011323e+277Initial program 26.3
rmApplied add-sqr-sqrt26.3
Applied associate-/r*26.2
if 2.966297851011323e+277 < x.re Initial program 44.5
rmApplied add-sqr-sqrt44.5
Applied associate-/r*44.5
Taylor expanded around 0 51.6
Simplified51.6
Final simplification26.8
herbie shell --seed 2020046
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
:precision binary64
(/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))