\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\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}}double f(double x_re, double x_im, double y_re, double y_im) {
double r2592510 = x_re;
double r2592511 = y_re;
double r2592512 = r2592510 * r2592511;
double r2592513 = x_im;
double r2592514 = y_im;
double r2592515 = r2592513 * r2592514;
double r2592516 = r2592512 + r2592515;
double r2592517 = r2592511 * r2592511;
double r2592518 = r2592514 * r2592514;
double r2592519 = r2592517 + r2592518;
double r2592520 = r2592516 / r2592519;
return r2592520;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2592521 = y_re;
double r2592522 = x_re;
double r2592523 = r2592521 * r2592522;
double r2592524 = y_im;
double r2592525 = x_im;
double r2592526 = r2592524 * r2592525;
double r2592527 = r2592523 + r2592526;
double r2592528 = r2592521 * r2592521;
double r2592529 = r2592524 * r2592524;
double r2592530 = r2592528 + r2592529;
double r2592531 = sqrt(r2592530);
double r2592532 = r2592527 / r2592531;
double r2592533 = r2592532 / r2592531;
return r2592533;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.3
rmApplied add-sqr-sqrt26.3
Applied associate-/r*26.2
Taylor expanded around inf 26.2
Final simplification26.2
herbie shell --seed 2019165
(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))))