\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{1}{\mathsf{hypot}\left(y.im, y.re\right)} \cdot \frac{y.re \cdot x.im - y.im \cdot x.re}{\mathsf{hypot}\left(y.im, y.re\right)}double f(double x_re, double x_im, double y_re, double y_im) {
double r1919944 = x_im;
double r1919945 = y_re;
double r1919946 = r1919944 * r1919945;
double r1919947 = x_re;
double r1919948 = y_im;
double r1919949 = r1919947 * r1919948;
double r1919950 = r1919946 - r1919949;
double r1919951 = r1919945 * r1919945;
double r1919952 = r1919948 * r1919948;
double r1919953 = r1919951 + r1919952;
double r1919954 = r1919950 / r1919953;
return r1919954;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1919955 = 1.0;
double r1919956 = y_im;
double r1919957 = y_re;
double r1919958 = hypot(r1919956, r1919957);
double r1919959 = r1919955 / r1919958;
double r1919960 = x_im;
double r1919961 = r1919957 * r1919960;
double r1919962 = x_re;
double r1919963 = r1919956 * r1919962;
double r1919964 = r1919961 - r1919963;
double r1919965 = r1919964 / r1919958;
double r1919966 = r1919959 * r1919965;
return r1919966;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.2
Simplified25.2
rmApplied *-un-lft-identity25.2
Applied associate-/l*25.3
rmApplied *-un-lft-identity25.3
Applied add-sqr-sqrt25.3
Applied times-frac25.3
Applied add-cube-cbrt25.3
Applied times-frac25.2
Simplified25.2
Simplified16.1
Final simplification16.1
herbie shell --seed 2019129 +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))))