\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.im \le 3.67504458165974214 \cdot 10^{89}:\\
\;\;\;\;\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 r117822 = x_im;
double r117823 = y_re;
double r117824 = r117822 * r117823;
double r117825 = x_re;
double r117826 = y_im;
double r117827 = r117825 * r117826;
double r117828 = r117824 - r117827;
double r117829 = r117823 * r117823;
double r117830 = r117826 * r117826;
double r117831 = r117829 + r117830;
double r117832 = r117828 / r117831;
return r117832;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r117833 = y_im;
double r117834 = 3.675044581659742e+89;
bool r117835 = r117833 <= r117834;
double r117836 = x_im;
double r117837 = y_re;
double r117838 = r117836 * r117837;
double r117839 = x_re;
double r117840 = r117839 * r117833;
double r117841 = r117838 - r117840;
double r117842 = r117837 * r117837;
double r117843 = r117833 * r117833;
double r117844 = r117842 + r117843;
double r117845 = sqrt(r117844);
double r117846 = r117841 / r117845;
double r117847 = r117846 / r117845;
double r117848 = -r117839;
double r117849 = r117848 / r117845;
double r117850 = r117835 ? r117847 : r117849;
return r117850;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if y.im < 3.675044581659742e+89Initial program 23.7
rmApplied add-sqr-sqrt23.7
Applied associate-/r*23.6
if 3.675044581659742e+89 < y.im Initial program 38.6
rmApplied add-sqr-sqrt38.7
Applied associate-/r*38.6
Taylor expanded around 0 38.0
Simplified38.0
Final simplification26.5
herbie shell --seed 2020042
(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))))