double f(double x_re, double x_im, double y_re, double y_im) {
double r1317468 = x_im;
double r1317469 = y_re;
double r1317470 = r1317468 * r1317469;
double r1317471 = x_re;
double r1317472 = y_im;
double r1317473 = r1317471 * r1317472;
double r1317474 = r1317470 - r1317473;
double r1317475 = r1317469 * r1317469;
double r1317476 = r1317472 * r1317472;
double r1317477 = r1317475 + r1317476;
double r1317478 = r1317474 / r1317477;
return r1317478;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1317479 = x_im;
double r1317480 = y_re;
double r1317481 = r1317479 * r1317480;
double r1317482 = x_re;
double r1317483 = y_im;
double r1317484 = r1317482 * r1317483;
double r1317485 = r1317481 - r1317484;
double r1317486 = r1317480 * r1317480;
double r1317487 = r1317483 * r1317483;
double r1317488 = r1317486 + r1317487;
double r1317489 = r1317485 / r1317488;
return r1317489;
}
\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 +o rules:numerics
(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))))