\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 \leq -2.3339225097803556 \cdot 10^{-17}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{x.im}{\frac{{y.re}^{2}}{y.im}}\\
\mathbf{elif}\;y.re \leq 1.1035576422910915 \cdot 10^{-08}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{y.re \cdot x.re}{{y.im}^{2}}\\
\mathbf{elif}\;y.re \leq 1.0502000497354221 \cdot 10^{+124}:\\
\;\;\;\;\frac{\frac{y.re \cdot x.re + x.im \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}{y.re} + \frac{x.im}{\frac{{y.re}^{2}}{y.im}}\\
\end{array}(FPCore (x.re x.im y.re y.im) :precision binary64 (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))
(FPCore (x.re x.im y.re y.im)
:precision binary64
(if (<= y.re -2.3339225097803556e-17)
(+ (/ x.re y.re) (/ x.im (/ (pow y.re 2.0) y.im)))
(if (<= y.re 1.1035576422910915e-08)
(+ (/ x.im y.im) (/ (* y.re x.re) (pow y.im 2.0)))
(if (<= y.re 1.0502000497354221e+124)
(/
(/
(+ (* y.re x.re) (* x.im y.im))
(sqrt (+ (* y.re y.re) (* y.im y.im))))
(sqrt (+ (* y.re y.re) (* y.im y.im))))
(+ (/ x.re y.re) (/ x.im (/ (pow y.re 2.0) y.im)))))))double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
return ((x_46_re * y_46_re) + (x_46_im * y_46_im)) / ((y_46_re * y_46_re) + (y_46_im * y_46_im));
}
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
double tmp;
if (y_46_re <= -2.3339225097803556e-17) {
tmp = (x_46_re / y_46_re) + (x_46_im / (pow(y_46_re, 2.0) / y_46_im));
} else if (y_46_re <= 1.1035576422910915e-08) {
tmp = (x_46_im / y_46_im) + ((y_46_re * x_46_re) / pow(y_46_im, 2.0));
} else if (y_46_re <= 1.0502000497354221e+124) {
tmp = (((y_46_re * x_46_re) + (x_46_im * y_46_im)) / sqrt((y_46_re * y_46_re) + (y_46_im * y_46_im))) / sqrt((y_46_re * y_46_re) + (y_46_im * y_46_im));
} else {
tmp = (x_46_re / y_46_re) + (x_46_im / (pow(y_46_re, 2.0) / y_46_im));
}
return tmp;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if y.re < -2.33392250978035558e-17 or 1.0502000497354221e124 < y.re Initial program 35.1
rmApplied clear-num_binary6435.2
Simplified35.2
rmApplied *-un-lft-identity_binary6435.2
Applied add-sqr-sqrt_binary6435.2
Applied times-frac_binary6435.2
Simplified35.2
Simplified35.2
Taylor expanded around inf 18.1
Simplified17.6
if -2.33392250978035558e-17 < y.re < 1.103557642291092e-8Initial program 19.1
Taylor expanded around 0 15.2
if 1.103557642291092e-8 < y.re < 1.0502000497354221e124Initial program 17.9
rmApplied add-sqr-sqrt_binary6417.9
Applied associate-/r*_binary6417.8
Final simplification16.5
herbie shell --seed 2021175
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
:precision binary64
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))