\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\mathsf{fma}\left(x.re, y.re, x.im \cdot y.im\right)}{\mathsf{fma}\left(y.im, y.im, y.re \cdot y.re\right)}double f(double x_re, double x_im, double y_re, double y_im) {
double r3135210 = x_re;
double r3135211 = y_re;
double r3135212 = r3135210 * r3135211;
double r3135213 = x_im;
double r3135214 = y_im;
double r3135215 = r3135213 * r3135214;
double r3135216 = r3135212 + r3135215;
double r3135217 = r3135211 * r3135211;
double r3135218 = r3135214 * r3135214;
double r3135219 = r3135217 + r3135218;
double r3135220 = r3135216 / r3135219;
return r3135220;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r3135221 = x_re;
double r3135222 = y_re;
double r3135223 = x_im;
double r3135224 = y_im;
double r3135225 = r3135223 * r3135224;
double r3135226 = fma(r3135221, r3135222, r3135225);
double r3135227 = r3135222 * r3135222;
double r3135228 = fma(r3135224, r3135224, r3135227);
double r3135229 = r3135226 / r3135228;
return r3135229;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 25.8
Simplified25.8
Final simplification25.8
herbie shell --seed 2019163 +o rules:numerics
(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))))