\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 -4.03421189658091 \cdot 10^{+207}:\\
\;\;\;\;\frac{-x.re}{\mathsf{hypot}\left(y.im, y.re\right)}\\
\mathbf{elif}\;y.re \le 5.125419024840355 \cdot 10^{+159}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(y.re, x.re, x.im \cdot y.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 r2162041 = x_re;
double r2162042 = y_re;
double r2162043 = r2162041 * r2162042;
double r2162044 = x_im;
double r2162045 = y_im;
double r2162046 = r2162044 * r2162045;
double r2162047 = r2162043 + r2162046;
double r2162048 = r2162042 * r2162042;
double r2162049 = r2162045 * r2162045;
double r2162050 = r2162048 + r2162049;
double r2162051 = r2162047 / r2162050;
return r2162051;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2162052 = y_re;
double r2162053 = -4.03421189658091e+207;
bool r2162054 = r2162052 <= r2162053;
double r2162055 = x_re;
double r2162056 = -r2162055;
double r2162057 = y_im;
double r2162058 = hypot(r2162057, r2162052);
double r2162059 = r2162056 / r2162058;
double r2162060 = 5.125419024840355e+159;
bool r2162061 = r2162052 <= r2162060;
double r2162062 = x_im;
double r2162063 = r2162062 * r2162057;
double r2162064 = fma(r2162052, r2162055, r2162063);
double r2162065 = r2162064 / r2162058;
double r2162066 = r2162065 / r2162058;
double r2162067 = r2162055 / r2162058;
double r2162068 = r2162061 ? r2162066 : r2162067;
double r2162069 = r2162054 ? r2162059 : r2162068;
return r2162069;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
if y.re < -4.03421189658091e+207Initial program 41.2
Simplified41.2
rmApplied add-sqr-sqrt41.2
Applied associate-/r*41.2
rmApplied div-inv41.2
rmApplied *-un-lft-identity41.2
Applied associate-*l*41.2
Simplified30.3
Taylor expanded around -inf 11.2
Simplified11.2
if -4.03421189658091e+207 < y.re < 5.125419024840355e+159Initial program 20.4
Simplified20.4
rmApplied add-sqr-sqrt20.4
Applied associate-/r*20.3
rmApplied div-inv20.4
rmApplied *-un-lft-identity20.4
Applied associate-*l*20.4
Simplified12.6
if 5.125419024840355e+159 < y.re Initial program 44.0
Simplified44.0
rmApplied add-sqr-sqrt44.0
Applied associate-/r*44.0
rmApplied div-inv44.0
rmApplied *-un-lft-identity44.0
Applied associate-*l*44.0
Simplified28.2
Taylor expanded around inf 13.2
Final simplification12.6
herbie shell --seed 2019134 +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))))