\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}double f(double x_re, double x_im, double y_re, double y_im) {
double r2627966 = x_im;
double r2627967 = y_re;
double r2627968 = r2627966 * r2627967;
double r2627969 = x_re;
double r2627970 = y_im;
double r2627971 = r2627969 * r2627970;
double r2627972 = r2627968 - r2627971;
double r2627973 = r2627967 * r2627967;
double r2627974 = r2627970 * r2627970;
double r2627975 = r2627973 + r2627974;
double r2627976 = r2627972 / r2627975;
return r2627976;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2627977 = x_im;
double r2627978 = y_re;
double r2627979 = r2627977 * r2627978;
double r2627980 = x_re;
double r2627981 = y_im;
double r2627982 = r2627980 * r2627981;
double r2627983 = r2627979 - r2627982;
double r2627984 = r2627978 * r2627978;
double r2627985 = r2627981 * r2627981;
double r2627986 = r2627984 + r2627985;
double r2627987 = sqrt(r2627986);
double r2627988 = r2627983 / r2627987;
double r2627989 = r2627988 / r2627987;
return r2627989;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 27.0
rmApplied add-sqr-sqrt27.0
Applied associate-/r*26.9
Final simplification26.9
herbie shell --seed 2019171 +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))))