\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 5.290220499438646573779156255085041511729 \cdot 10^{298}:\\
\;\;\;\;\frac{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{x.re \cdot y.re + x.im \cdot y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1 \cdot 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 r42254 = x_re;
double r42255 = y_re;
double r42256 = r42254 * r42255;
double r42257 = x_im;
double r42258 = y_im;
double r42259 = r42257 * r42258;
double r42260 = r42256 + r42259;
double r42261 = r42255 * r42255;
double r42262 = r42258 * r42258;
double r42263 = r42261 + r42262;
double r42264 = r42260 / r42263;
return r42264;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r42265 = x_re;
double r42266 = y_re;
double r42267 = r42265 * r42266;
double r42268 = x_im;
double r42269 = y_im;
double r42270 = r42268 * r42269;
double r42271 = r42267 + r42270;
double r42272 = r42266 * r42266;
double r42273 = r42269 * r42269;
double r42274 = r42272 + r42273;
double r42275 = r42271 / r42274;
double r42276 = 5.290220499438647e+298;
bool r42277 = r42275 <= r42276;
double r42278 = 1.0;
double r42279 = sqrt(r42274);
double r42280 = r42279 / r42271;
double r42281 = r42278 / r42280;
double r42282 = r42281 / r42279;
double r42283 = -1.0;
double r42284 = r42283 * r42265;
double r42285 = r42284 / r42279;
double r42286 = r42277 ? r42282 : r42285;
return r42286;
}



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))) < 5.290220499438647e+298Initial program 14.4
rmApplied add-sqr-sqrt14.4
Applied associate-/r*14.3
rmApplied clear-num14.4
if 5.290220499438647e+298 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) Initial program 63.4
rmApplied add-sqr-sqrt63.4
Applied associate-/r*63.4
Taylor expanded around -inf 60.3
Final simplification25.4
herbie shell --seed 2019304
(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))))