=================================================================== RCS file: /home/cvs/OpenXM_contrib/gmp/mpz/Attic/setbit.c,v retrieving revision 1.1.1.2 retrieving revision 1.1.1.3 diff -u -p -r1.1.1.2 -r1.1.1.3 --- OpenXM_contrib/gmp/mpz/Attic/setbit.c 2000/09/09 14:12:58 1.1.1.2 +++ OpenXM_contrib/gmp/mpz/Attic/setbit.c 2003/08/25 16:06:34 1.1.1.3 @@ -1,7 +1,7 @@ /* mpz_setbit -- set a specified bit. -Copyright (C) 1991, 1993, 1994, 1995, 1997, 1999 Free Software Foundation, -Inc. +Copyright 1991, 1993, 1994, 1995, 1997, 1999, 2001, 2002 Free Software +Foundation, Inc. This file is part of the GNU MP Library. @@ -24,24 +24,18 @@ MA 02111-1307, USA. */ #include "gmp-impl.h" void -#if __STDC__ mpz_setbit (mpz_ptr d, unsigned long int bit_index) -#else -mpz_setbit (d, bit_index) - mpz_ptr d; - unsigned long int bit_index; -#endif { mp_size_t dsize = d->_mp_size; mp_ptr dp = d->_mp_d; mp_size_t limb_index; - limb_index = bit_index / BITS_PER_MP_LIMB; + limb_index = bit_index / GMP_NUMB_BITS; if (dsize >= 0) { if (limb_index < dsize) { - dp[limb_index] |= (mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB); + dp[limb_index] |= (mp_limb_t) 1 << (bit_index % GMP_NUMB_BITS); d->_mp_size = dsize; } else @@ -54,7 +48,7 @@ mpz_setbit (d, bit_index) dp = d->_mp_d; } MPN_ZERO (dp + dsize, limb_index - dsize); - dp[limb_index] = (mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB); + dp[limb_index] = (mp_limb_t) 1 << (bit_index % GMP_NUMB_BITS); d->_mp_size = limb_index + 1; } } @@ -78,14 +72,16 @@ mpz_setbit (d, bit_index) if (limb_index > zero_bound) { if (limb_index < dsize) - dp[limb_index] &= ~((mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB)); - else - ; + { + dp[limb_index] &= ~((mp_limb_t) 1 << (bit_index % GMP_NUMB_BITS)); + MPN_NORMALIZE (dp, dsize); + d->_mp_size = -dsize; + } } else if (limb_index == zero_bound) { dp[limb_index] = ((dp[limb_index] - 1) - & ~((mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB))) + 1; + & ~((mp_limb_t) 1 << (bit_index % GMP_NUMB_BITS))) + 1; if (dp[limb_index] == 0) { mp_size_t i; @@ -111,7 +107,7 @@ mpz_setbit (d, bit_index) else { mpn_decr_u (dp + limb_index, - (mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB)); + (mp_limb_t) 1 << (bit_index % GMP_NUMB_BITS)); dsize -= dp[dsize - 1] == 0; d->_mp_size = -dsize; }