summaryrefslogtreecommitdiff
path: root/mpz
diff options
context:
space:
mode:
authorMarco Bodrato <bodrato@mail.dm.unipi.it>2021-11-07 09:03:30 +0100
committerMarco Bodrato <bodrato@mail.dm.unipi.it>2021-11-07 09:03:30 +0100
commit029c1bc4ff3ede89c79d0246ed6a26fca159ca03 (patch)
tree2f499cb8ed399ceac0af7abed6d4e502c57af8be /mpz
parentdf760522433a50c884e3dd2d0b1f938dc29c4603 (diff)
downloadgmp-029c1bc4ff3ede89c79d0246ed6a26fca159ca03.tar.gz
mpz/aorsmul_i.c: Simplify using mpn_neg.
Diffstat (limited to 'mpz')
-rw-r--r--mpz/aorsmul_i.c11
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. */