\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{1}{\frac{y.re \cdot y.re + y.im \cdot y.im}{x.im \cdot y.re - x.re \cdot y.im}}double f(double x_re, double x_im, double y_re, double y_im) {
double r3554295 = x_im;
double r3554296 = y_re;
double r3554297 = r3554295 * r3554296;
double r3554298 = x_re;
double r3554299 = y_im;
double r3554300 = r3554298 * r3554299;
double r3554301 = r3554297 - r3554300;
double r3554302 = r3554296 * r3554296;
double r3554303 = r3554299 * r3554299;
double r3554304 = r3554302 + r3554303;
double r3554305 = r3554301 / r3554304;
return r3554305;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r3554306 = 1.0;
double r3554307 = y_re;
double r3554308 = r3554307 * r3554307;
double r3554309 = y_im;
double r3554310 = r3554309 * r3554309;
double r3554311 = r3554308 + r3554310;
double r3554312 = x_im;
double r3554313 = r3554312 * r3554307;
double r3554314 = x_re;
double r3554315 = r3554314 * r3554309;
double r3554316 = r3554313 - r3554315;
double r3554317 = r3554311 / r3554316;
double r3554318 = r3554306 / r3554317;
return r3554318;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.8
rmApplied *-un-lft-identity25.8
Applied associate-/l*25.9
Final simplification25.9
herbie shell --seed 2019121
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
(/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))