\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}\;\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im} \le 7.481788176558886 \cdot 10^{297}:\\
\;\;\;\;\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.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 r115213 = x_im;
double r115214 = y_re;
double r115215 = r115213 * r115214;
double r115216 = x_re;
double r115217 = y_im;
double r115218 = r115216 * r115217;
double r115219 = r115215 - r115218;
double r115220 = r115214 * r115214;
double r115221 = r115217 * r115217;
double r115222 = r115220 + r115221;
double r115223 = r115219 / r115222;
return r115223;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r115224 = x_im;
double r115225 = y_re;
double r115226 = r115224 * r115225;
double r115227 = x_re;
double r115228 = y_im;
double r115229 = r115227 * r115228;
double r115230 = r115226 - r115229;
double r115231 = r115225 * r115225;
double r115232 = r115228 * r115228;
double r115233 = r115231 + r115232;
double r115234 = r115230 / r115233;
double r115235 = 7.481788176558886e+297;
bool r115236 = r115234 <= r115235;
double r115237 = sqrt(r115233);
double r115238 = r115230 / r115237;
double r115239 = r115238 / r115237;
double r115240 = r115224 / r115237;
double r115241 = r115236 ? r115239 : r115240;
return r115241;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))) < 7.481788176558886e+297Initial program 14.1
rmApplied add-sqr-sqrt14.1
Applied associate-/r*14.0
if 7.481788176558886e+297 < (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 63.2
rmApplied add-sqr-sqrt63.2
Applied associate-/r*63.2
Taylor expanded around inf 60.3
Final simplification25.0
herbie shell --seed 2020089
(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))))