From 0703ea9ea4155d59d1356713789c60f5e6e8c7a6 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Wed, 11 May 2016 18:22:11 +0200 Subject: Always satisfy n=qd+r to avoid confusion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/zdivmod.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/zdivmod.c') diff --git a/src/zdivmod.c b/src/zdivmod.c index dae0e02..80b75df 100644 --- a/src/zdivmod.c +++ b/src/zdivmod.c @@ -67,9 +67,10 @@ done: void zdivmod(z_t a, z_t b, z_t c, z_t d) { - int sign, cmpmag; + int c_sign, sign, cmpmag; - sign = zsignum(c) * zsignum(d); + c_sign = zsignum(c); + sign = c_sign * zsignum(d); if (unlikely(!sign)) { if (check(!zzero(c))) { @@ -87,7 +88,6 @@ zdivmod(z_t a, z_t b, z_t c, z_t d) SET_SIGNUM(b, 0); } else { SET(b, c); - SET_SIGNUM(b, 1); SET_SIGNUM(a, 0); } return; @@ -95,4 +95,6 @@ zdivmod(z_t a, z_t b, z_t c, z_t d) zdivmod_impl(a, b, c, d); SET_SIGNUM(a, sign); + if (zsignum(b) > 0) + SET_SIGNUM(b, c_sign); } -- cgit v1.2.3-70-g09d2