=================================================================== RCS file: /home/cvs/OpenXM_contrib/gmp/mpz/Attic/sizeinbase.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/sizeinbase.c 2000/09/09 14:12:58 1.1.1.2 +++ OpenXM_contrib/gmp/mpz/Attic/sizeinbase.c 2003/08/25 16:06:34 1.1.1.3 @@ -2,7 +2,7 @@ character the integer X would have printed in base BASE. The approximation is never too small. -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. @@ -26,35 +26,9 @@ MA 02111-1307, USA. */ #include "longlong.h" size_t -#if __STDC__ mpz_sizeinbase (mpz_srcptr x, int base) -#else -mpz_sizeinbase (x, base) - mpz_srcptr x; - int base; -#endif { - mp_size_t size = ABS (x->_mp_size); - int lb_base, cnt; - size_t totbits; - - /* Special case for X == 0. */ - if (size == 0) - return 1; - - /* Calculate the total number of significant bits of X. */ - count_leading_zeros (cnt, x->_mp_d[size - 1]); - totbits = size * BITS_PER_MP_LIMB - cnt; - - if ((base & (base - 1)) == 0) - { - /* Special case for powers of 2, giving exact result. */ - - count_leading_zeros (lb_base, base); - lb_base = BITS_PER_MP_LIMB - lb_base - 1; - - return (totbits + lb_base - 1) / lb_base; - } - else - return (size_t) (totbits * __mp_bases[base].chars_per_bit_exactly) + 1; + size_t result; + MPN_SIZEINBASE (result, PTR(x), ABSIZ(x), base); + return result; }