mpz_sizeinbase
Kevin Ryde
user42@zip.com.au
Sat, 02 Nov 2002 07:17:34 +1000
Minh Nguyen <md6nguyen@yahoo.com> writes:
>
> Now, suppose the return value of mpz_sizeinbase(op, base) is numdigs and I want to know the *exact* number of digits. The most straightforward way is to compare op with base^(numdigs-1) and then reduce numdigs by 1 if op is less than base^(numdigs-1). Is there a better way?
Not that I know of.
Per remarks under "Binary to Radix" in the manual, I think examining
some of the high bits of "op" could give an exact answer more often,
to the point of "almost always", but in general it's a bit tricky
because the difference between "op" being n or n-1 digits can be only
in the very last few bits.
> By the way, is it too expensive to *always* return the exact number of digits when base is not 2 ?
It already does so. :-) (And it always did I think, but it's has only
recently been documented.)