\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.im \leq -7.553879560626287 \cdot 10^{+93}:\\
\;\;\;\;\frac{x.im}{y.im} + \frac{1}{y.im} \cdot \left(\frac{y.re}{y.im} \cdot \left(x.re - \frac{x.im}{y.im} \cdot y.re\right)\right)\\
\mathbf{elif}\;y.im \leq -7.875830746956647 \cdot 10^{-107}:\\
\;\;\;\;\frac{\frac{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{elif}\;y.im \leq 2.5365321914959593 \cdot 10^{-134}:\\
\;\;\;\;\frac{x.re}{y.re} + \frac{y.im \cdot x.im}{{y.re}^{2}}\\
\mathbf{elif}\;y.im \leq 7.162264487896466 \cdot 10^{+81}:\\
\;\;\;\;\frac{\frac{y.re \cdot x.re + y.im \cdot x.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}{y.im} + \frac{\sqrt[3]{y.re} \cdot \sqrt[3]{y.re}}{y.im} \cdot \left(\left(x.re - \frac{x.im}{y.im} \cdot y.re\right) \cdot \frac{\sqrt[3]{y.re}}{y.im}\right)\\
\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.im -7.553879560626287e+93)
(+
(/ x.im y.im)
(* (/ 1.0 y.im) (* (/ y.re y.im) (- x.re (* (/ x.im y.im) y.re)))))
(if (<= y.im -7.875830746956647e-107)
(/
(/
(+ (* y.re x.re) (* y.im x.im))
(sqrt (+ (* y.re y.re) (* y.im y.im))))
(sqrt (+ (* y.re y.re) (* y.im y.im))))
(if (<= y.im 2.5365321914959593e-134)
(+ (/ x.re y.re) (/ (* y.im x.im) (pow y.re 2.0)))
(if (<= y.im 7.162264487896466e+81)
(/
(/
(+ (* y.re x.re) (* y.im x.im))
(sqrt (+ (* y.re y.re) (* y.im y.im))))
(sqrt (+ (* y.re y.re) (* y.im y.im))))
(+
(/ x.im y.im)
(*
(/ (* (cbrt y.re) (cbrt y.re)) y.im)
(* (- x.re (* (/ x.im y.im) y.re)) (/ (cbrt y.re) 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_im <= -7.553879560626287e+93) {
tmp = (x_46_im / y_46_im) + ((1.0 / y_46_im) * ((y_46_re / y_46_im) * (x_46_re - ((x_46_im / y_46_im) * y_46_re))));
} else if (y_46_im <= -7.875830746956647e-107) {
tmp = (((y_46_re * x_46_re) + (y_46_im * x_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 if (y_46_im <= 2.5365321914959593e-134) {
tmp = (x_46_re / y_46_re) + ((y_46_im * x_46_im) / pow(y_46_re, 2.0));
} else if (y_46_im <= 7.162264487896466e+81) {
tmp = (((y_46_re * x_46_re) + (y_46_im * x_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_im / y_46_im) + (((cbrt(y_46_re) * cbrt(y_46_re)) / y_46_im) * ((x_46_re - ((x_46_im / y_46_im) * y_46_re)) * (cbrt(y_46_re) / 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.im < -7.5538795606262866e93Initial program 40.4
rmApplied div-inv_binary64_143940.4
Simplified40.4
Taylor expanded around 0 23.2
Simplified18.8
rmApplied unpow2_binary64_150718.8
Applied *-un-lft-identity_binary64_144218.8
Applied times-frac_binary64_144816.6
Applied associate-*l*_binary64_138313.6
Simplified10.4
if -7.5538795606262866e93 < y.im < -7.87583074695664708e-107 or 2.5365321914959593e-134 < y.im < 7.16226448789646589e81Initial program 15.1
rmApplied add-sqr-sqrt_binary64_146415.1
Applied associate-/r*_binary64_138615.0
if -7.87583074695664708e-107 < y.im < 2.5365321914959593e-134Initial program 21.9
Taylor expanded around inf 10.6
if 7.16226448789646589e81 < y.im Initial program 37.4
rmApplied div-inv_binary64_143937.4
Simplified37.4
Taylor expanded around 0 24.2
Simplified19.5
rmApplied unpow2_binary64_150719.5
Applied add-cube-cbrt_binary64_147719.5
Applied times-frac_binary64_144818.0
Applied associate-*l*_binary64_138315.1
Simplified11.7
Final simplification12.3
herbie shell --seed 2021024
(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))))