\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.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im} \le 3.7234357932591811 \cdot 10^{232}:\\
\;\;\;\;\frac{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.im \cdot x.im + y.re \cdot x.re}}}{\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 r58439 = x_re;
double r58440 = y_re;
double r58441 = r58439 * r58440;
double r58442 = x_im;
double r58443 = y_im;
double r58444 = r58442 * r58443;
double r58445 = r58441 + r58444;
double r58446 = r58440 * r58440;
double r58447 = r58443 * r58443;
double r58448 = r58446 + r58447;
double r58449 = r58445 / r58448;
return r58449;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r58450 = x_re;
double r58451 = y_re;
double r58452 = r58450 * r58451;
double r58453 = x_im;
double r58454 = y_im;
double r58455 = r58453 * r58454;
double r58456 = r58452 + r58455;
double r58457 = r58451 * r58451;
double r58458 = r58454 * r58454;
double r58459 = r58457 + r58458;
double r58460 = r58456 / r58459;
double r58461 = 3.723435793259181e+232;
bool r58462 = r58460 <= r58461;
double r58463 = 1.0;
double r58464 = sqrt(r58459);
double r58465 = r58454 * r58453;
double r58466 = r58451 * r58450;
double r58467 = r58465 + r58466;
double r58468 = r58464 / r58467;
double r58469 = r58463 / r58468;
double r58470 = r58469 / r58464;
double r58471 = -r58450;
double r58472 = r58471 / r58464;
double r58473 = r58462 ? r58470 : r58472;
return r58473;
}



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))) < 3.723435793259181e+232Initial program 13.9
rmApplied add-sqr-sqrt13.9
Applied associate-/r*13.8
rmApplied clear-num13.8
Simplified13.8
if 3.723435793259181e+232 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 60.0
rmApplied add-sqr-sqrt60.0
Applied associate-/r*60.0
Taylor expanded around -inf 59.9
Simplified59.9
Final simplification25.8
herbie shell --seed 2020045
(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))))