diff --git a/src/mzscheme/src/complex.c b/src/mzscheme/src/complex.c index 582fb05561..16ef0dd6dc 100644 --- a/src/mzscheme/src/complex.c +++ b/src/mzscheme/src/complex.c @@ -289,18 +289,16 @@ Scheme_Object *scheme_complex_divide(const Scheme_Object *_n, const Scheme_Objec swap = 1; } else swap = 0; - + r = scheme_bin_div(c, d); den = scheme_bin_plus(d, scheme_bin_mult(c, r)); - - i = scheme_bin_div((swap - ? scheme_bin_minus(a, scheme_bin_mult(b, r)) - : scheme_bin_minus(scheme_bin_mult(b, r), a)), - den); - r = scheme_bin_div(scheme_bin_plus(b, scheme_bin_mult(a, r)), - den); - + + if (swap) i = scheme_bin_div(scheme_bin_minus(a, scheme_bin_mult(b, r)), den); + else i = scheme_bin_div(scheme_bin_minus(scheme_bin_mult(b, r), a), den); + + r = scheme_bin_div(scheme_bin_plus(b, scheme_bin_mult(a, r)), den); + return scheme_make_complex(r, i); }