double f(double x_re, double x_im, double y_re, double y_im) {
double r780244 = x_im;
double r780245 = y_re;
double r780246 = r780244 * r780245;
double r780247 = x_re;
double r780248 = y_im;
double r780249 = r780247 * r780248;
double r780250 = r780246 - r780249;
double r780251 = r780245 * r780245;
double r780252 = r780248 * r780248;
double r780253 = r780251 + r780252;
double r780254 = r780250 / r780253;
return r780254;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r780255 = x_im;
double r780256 = y_re;
double r780257 = r780255 * r780256;
double r780258 = x_re;
double r780259 = y_im;
double r780260 = r780258 * r780259;
double r780261 = r780257 - r780260;
double r780262 = r780256 * r780256;
double r780263 = r780259 * r780259;
double r780264 = r780262 + r780263;
double r780265 = r780261 / r780264;
return r780265;
}
\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{x.im \cdot y.re - x.re \cdot y.im}{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 1.1
Final simplification1.1
herbie shell --seed 2019101
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
(/.p16 (-.p16 (*.p16 x.im y.re) (*.p16 x.re y.im)) (+.p16 (*.p16 y.re y.re) (*.p16 y.im y.im))))