diff options
author | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2021-11-07 09:03:30 +0100 |
---|---|---|
committer | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2021-11-07 09:03:30 +0100 |
commit | 029c1bc4ff3ede89c79d0246ed6a26fca159ca03 (patch) | |
tree | 2f499cb8ed399ceac0af7abed6d4e502c57af8be /mpz | |
parent | df760522433a50c884e3dd2d0b1f938dc29c4603 (diff) | |
download | gmp-029c1bc4ff3ede89c79d0246ed6a26fca159ca03.tar.gz |
mpz/aorsmul_i.c: Simplify using mpn_neg.
Diffstat (limited to 'mpz')
-rw-r--r-- | mpz/aorsmul_i.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/mpz/aorsmul_i.c b/mpz/aorsmul_i.c index 73f986e8a..cd41d2323 100644 --- a/mpz/aorsmul_i.c +++ b/mpz/aorsmul_i.c @@ -151,10 +151,9 @@ mpz_aorsmul_1 (mpz_ptr w, mpz_srcptr x, mp_limb_t y, mp_size_t sub) { /* Borrow out of w, take twos complement negative to get absolute value, flip sign of w. */ - wp[new_wsize] = ~-cy; /* extra limb is 0-cy */ - mpn_com (wp, wp, new_wsize); - new_wsize++; - MPN_INCR_U (wp, new_wsize, CNST_LIMB(1)); + cy -= mpn_neg (wp, wp, new_wsize); + wp[new_wsize] = cy; + new_wsize += (cy != 0); wsize_signed = -wsize_signed; } } @@ -166,9 +165,7 @@ mpz_aorsmul_1 (mpz_ptr w, mpz_srcptr x, mp_limb_t y, mp_size_t sub) mp_limb_t cy2; /* -(-cy*b^n + w-x*y) = (cy-1)*b^n + ~(w-x*y) + 1 */ - mpn_com (wp, wp, wsize); - cy += mpn_add_1 (wp, wp, wsize, CNST_LIMB(1)); - cy -= 1; + cy -= mpn_neg (wp, wp, wsize); /* If cy-1 == -1 then hold that -1 for latter. mpn_submul_1 never returns cy==MP_LIMB_T_MAX so that value always indicates a -1. */ |