\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{1}{\mathsf{fma}\left(y.im, y.im, \left(y.re \cdot y.re\right)\right)} \cdot \left(x.im \cdot y.re - x.re \cdot y.im\right)double f(double x_re, double x_im, double y_re, double y_im) {
double r3763628 = x_im;
double r3763629 = y_re;
double r3763630 = r3763628 * r3763629;
double r3763631 = x_re;
double r3763632 = y_im;
double r3763633 = r3763631 * r3763632;
double r3763634 = r3763630 - r3763633;
double r3763635 = r3763629 * r3763629;
double r3763636 = r3763632 * r3763632;
double r3763637 = r3763635 + r3763636;
double r3763638 = r3763634 / r3763637;
return r3763638;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r3763639 = 1.0;
double r3763640 = y_im;
double r3763641 = y_re;
double r3763642 = r3763641 * r3763641;
double r3763643 = fma(r3763640, r3763640, r3763642);
double r3763644 = r3763639 / r3763643;
double r3763645 = x_im;
double r3763646 = r3763645 * r3763641;
double r3763647 = x_re;
double r3763648 = r3763647 * r3763640;
double r3763649 = r3763646 - r3763648;
double r3763650 = r3763644 * r3763649;
return r3763650;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 25.4
Simplified25.4
rmApplied div-inv25.5
Final simplification25.5
herbie shell --seed 2019125 +o rules:numerics
(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))))