double f(double x_re, double x_im, double y_re, double y_im) {
double r2364350 = x_re;
double r2364351 = y_re;
double r2364352 = r2364350 * r2364351;
double r2364353 = x_im;
double r2364354 = y_im;
double r2364355 = r2364353 * r2364354;
double r2364356 = r2364352 + r2364355;
double r2364357 = r2364351 * r2364351;
double r2364358 = r2364354 * r2364354;
double r2364359 = r2364357 + r2364358;
double r2364360 = r2364356 / r2364359;
return r2364360;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2364361 = x_im;
double r2364362 = y_im;
double r2364363 = r2364361 * r2364362;
double r2364364 = x_re;
double r2364365 = y_re;
double r2364366 = r2364364 * r2364365;
double r2364367 = r2364363 + r2364366;
double r2364368 = r2364365 * r2364365;
double r2364369 = r2364362 * r2364362;
double r2364370 = r2364368 + r2364369;
double r2364371 = sqrt(r2364370);
double r2364372 = r2364367 / r2364371;
double r2364373 = r2364372 / r2364371;
return r2364373;
}
\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\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}}


Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 25.8
rmApplied add-sqr-sqrt25.8
Applied associate-/r*25.8
Final simplification25.8
herbie shell --seed 2019101
(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))))