\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}\;y.re \le -1.2109434524169916 \cdot 10^{+96}:\\
\;\;\;\;-\frac{x.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{elif}\;y.re \le 5.2422713568197025 \cdot 10^{+36}:\\
\;\;\;\;\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 r2860015 = x_im;
double r2860016 = y_re;
double r2860017 = r2860015 * r2860016;
double r2860018 = x_re;
double r2860019 = y_im;
double r2860020 = r2860018 * r2860019;
double r2860021 = r2860017 - r2860020;
double r2860022 = r2860016 * r2860016;
double r2860023 = r2860019 * r2860019;
double r2860024 = r2860022 + r2860023;
double r2860025 = r2860021 / r2860024;
return r2860025;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2860026 = y_re;
double r2860027 = -1.2109434524169916e+96;
bool r2860028 = r2860026 <= r2860027;
double r2860029 = x_im;
double r2860030 = r2860026 * r2860026;
double r2860031 = y_im;
double r2860032 = r2860031 * r2860031;
double r2860033 = r2860030 + r2860032;
double r2860034 = sqrt(r2860033);
double r2860035 = r2860029 / r2860034;
double r2860036 = -r2860035;
double r2860037 = 5.2422713568197025e+36;
bool r2860038 = r2860026 <= r2860037;
double r2860039 = r2860029 * r2860026;
double r2860040 = x_re;
double r2860041 = r2860040 * r2860031;
double r2860042 = r2860039 - r2860041;
double r2860043 = r2860042 / r2860034;
double r2860044 = r2860043 / r2860034;
double r2860045 = r2860038 ? r2860044 : r2860035;
double r2860046 = r2860028 ? r2860036 : r2860045;
return r2860046;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if y.re < -1.2109434524169916e+96Initial program 39.0
rmApplied add-sqr-sqrt39.0
Applied associate-/r*38.9
Taylor expanded around -inf 38.2
Simplified38.2
if -1.2109434524169916e+96 < y.re < 5.2422713568197025e+36Initial program 18.5
rmApplied add-sqr-sqrt18.5
Applied associate-/r*18.4
if 5.2422713568197025e+36 < y.re Initial program 34.4
rmApplied add-sqr-sqrt34.5
Applied associate-/r*34.4
Taylor expanded around inf 36.1
Final simplification26.2
herbie shell --seed 2019165
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
(/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))