=================================================================== RCS file: /home/cvs/OpenXM_contrib/gmp/mpz/Attic/clrbit.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/clrbit.c 2000/09/09 14:12:49 1.1.1.2 +++ OpenXM_contrib/gmp/mpz/Attic/clrbit.c 2003/08/25 16:06:32 1.1.1.3 @@ -1,6 +1,6 @@ /* mpz_clrbit -- clear a specified bit. -Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc. +Copyright 1991, 1993, 1994, 1995, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU MP Library. @@ -23,24 +23,18 @@ MA 02111-1307, USA. */ #include "gmp-impl.h" void -#if __STDC__ mpz_clrbit (mpz_ptr d, unsigned long int bit_index) -#else -mpz_clrbit (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)); MPN_NORMALIZE (dp, dsize); d->_mp_size = dsize; } @@ -67,7 +61,7 @@ mpz_clrbit (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); + dp[limb_index] |= (mp_limb_t) 1 << (bit_index % GMP_NUMB_BITS); else { /* Ugh. The bit should be cleared outside of the end of the @@ -78,20 +72,21 @@ mpz_clrbit (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); } } else if (limb_index == zero_bound) { - dp[limb_index] = ((dp[limb_index] - 1) - | ((mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB))) + 1; + dp[limb_index] = ((((dp[limb_index] - 1) + | ((mp_limb_t) 1 << (bit_index % GMP_NUMB_BITS))) + 1) + & GMP_NUMB_MASK); if (dp[limb_index] == 0) { mp_size_t i; for (i = limb_index + 1; i < dsize; i++) { - dp[i] += 1; + dp[i] = (dp[i] + 1) & GMP_NUMB_MASK; if (dp[i] != 0) goto fin; }