\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}\;y.re \le -5.086126503497258 \cdot 10^{+188}:\\
\;\;\;\;\frac{-x.re}{\mathsf{hypot}\left(y.im, y.re\right)}\\
\mathbf{elif}\;y.re \le 6.204871618360054 \cdot 10^{+176}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(x.re, y.re, y.im \cdot x.im\right)}{\mathsf{hypot}\left(y.im, y.re\right)}}{\mathsf{hypot}\left(y.im, y.re\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{x.re}{\mathsf{hypot}\left(y.im, y.re\right)}\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r2430887 = x_re;
double r2430888 = y_re;
double r2430889 = r2430887 * r2430888;
double r2430890 = x_im;
double r2430891 = y_im;
double r2430892 = r2430890 * r2430891;
double r2430893 = r2430889 + r2430892;
double r2430894 = r2430888 * r2430888;
double r2430895 = r2430891 * r2430891;
double r2430896 = r2430894 + r2430895;
double r2430897 = r2430893 / r2430896;
return r2430897;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2430898 = y_re;
double r2430899 = -5.086126503497258e+188;
bool r2430900 = r2430898 <= r2430899;
double r2430901 = x_re;
double r2430902 = -r2430901;
double r2430903 = y_im;
double r2430904 = hypot(r2430903, r2430898);
double r2430905 = r2430902 / r2430904;
double r2430906 = 6.204871618360054e+176;
bool r2430907 = r2430898 <= r2430906;
double r2430908 = x_im;
double r2430909 = r2430903 * r2430908;
double r2430910 = fma(r2430901, r2430898, r2430909);
double r2430911 = r2430910 / r2430904;
double r2430912 = r2430911 / r2430904;
double r2430913 = r2430901 / r2430904;
double r2430914 = r2430907 ? r2430912 : r2430913;
double r2430915 = r2430900 ? r2430905 : r2430914;
return r2430915;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
if y.re < -5.086126503497258e+188Initial program 41.2
Simplified41.2
rmApplied add-sqr-sqrt41.2
Applied associate-/r*41.2
rmApplied clear-num41.2
Simplified29.6
rmApplied associate-/r*29.0
Simplified29.0
Taylor expanded around -inf 12.0
Simplified12.0
if -5.086126503497258e+188 < y.re < 6.204871618360054e+176Initial program 20.9
Simplified20.9
rmApplied add-sqr-sqrt20.9
Applied associate-/r*20.8
rmApplied clear-num21.1
Simplified13.6
rmApplied associate-/r*13.1
Simplified13.0
if 6.204871618360054e+176 < y.re Initial program 44.6
Simplified44.6
rmApplied add-sqr-sqrt44.6
Applied associate-/r*44.6
rmApplied clear-num44.6
Simplified31.9
rmApplied associate-/r*31.4
Simplified31.4
Taylor expanded around inf 12.5
Final simplification12.9
herbie shell --seed 2019162 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))