\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}\;\frac{x.im \cdot y.im + x.re \cdot y.re}{y.re \cdot y.re + y.im \cdot y.im} = -\infty:\\
\;\;\;\;\frac{-x.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{elif}\;\frac{x.im \cdot y.im + x.re \cdot y.re}{y.re \cdot y.re + y.im \cdot y.im} \le 1.444073714691111652490143880583541065297 \cdot 10^{307}:\\
\;\;\;\;\frac{\frac{x.im \cdot y.im + x.re \cdot y.re}{\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 r2552281 = x_re;
double r2552282 = y_re;
double r2552283 = r2552281 * r2552282;
double r2552284 = x_im;
double r2552285 = y_im;
double r2552286 = r2552284 * r2552285;
double r2552287 = r2552283 + r2552286;
double r2552288 = r2552282 * r2552282;
double r2552289 = r2552285 * r2552285;
double r2552290 = r2552288 + r2552289;
double r2552291 = r2552287 / r2552290;
return r2552291;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2552292 = x_im;
double r2552293 = y_im;
double r2552294 = r2552292 * r2552293;
double r2552295 = x_re;
double r2552296 = y_re;
double r2552297 = r2552295 * r2552296;
double r2552298 = r2552294 + r2552297;
double r2552299 = r2552296 * r2552296;
double r2552300 = r2552293 * r2552293;
double r2552301 = r2552299 + r2552300;
double r2552302 = r2552298 / r2552301;
double r2552303 = -inf.0;
bool r2552304 = r2552302 <= r2552303;
double r2552305 = -r2552295;
double r2552306 = sqrt(r2552301);
double r2552307 = r2552305 / r2552306;
double r2552308 = 1.4440737146911117e+307;
bool r2552309 = r2552302 <= r2552308;
double r2552310 = r2552298 / r2552306;
double r2552311 = r2552310 / r2552306;
double r2552312 = r2552309 ? r2552311 : r2552307;
double r2552313 = r2552304 ? r2552307 : r2552312;
return r2552313;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) < -inf.0 or 1.4440737146911117e+307 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 63.9
rmApplied add-sqr-sqrt63.9
Applied associate-/r*63.9
Taylor expanded around -inf 59.5
Simplified59.5
if -inf.0 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) < 1.4440737146911117e+307Initial program 11.3
rmApplied add-sqr-sqrt11.3
Applied associate-/r*11.2
Final simplification24.7
herbie shell --seed 2019192
(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))))