\frac{\left(\left(x.im \cdot y.re\right) - \left(x.re \cdot y.im\right)\right)}{\left(\frac{\left(y.re \cdot y.re\right)}{\left(y.im \cdot y.im\right)}\right)}\frac{\frac{x.im \cdot y.re + x.re \cdot y.im}{\frac{x.im \cdot y.re + x.re \cdot y.im}{x.im \cdot y.re - x.re \cdot y.im}}}{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 r2778117 = x_im;
double r2778118 = y_re;
double r2778119 = r2778117 * r2778118;
double r2778120 = x_re;
double r2778121 = y_im;
double r2778122 = r2778120 * r2778121;
double r2778123 = r2778119 - r2778122;
double r2778124 = r2778118 * r2778118;
double r2778125 = r2778121 * r2778121;
double r2778126 = r2778124 + r2778125;
double r2778127 = r2778123 / r2778126;
return r2778127;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2778128 = x_im;
double r2778129 = y_re;
double r2778130 = r2778128 * r2778129;
double r2778131 = x_re;
double r2778132 = y_im;
double r2778133 = r2778131 * r2778132;
double r2778134 = r2778130 + r2778133;
double r2778135 = r2778130 - r2778133;
double r2778136 = r2778134 / r2778135;
double r2778137 = r2778134 / r2778136;
double r2778138 = r2778129 * r2778129;
double r2778139 = r2778132 * r2778132;
double r2778140 = r2778138 + r2778139;
double r2778141 = r2778137 / r2778140;
return r2778141;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 1.1
rmApplied p16-flip--2.1
rmApplied difference-of-squares1.9
Applied associate-/l*1.1
Final simplification1.1
herbie shell --seed 2019132 +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))))