| Bill Allombert on Fri, 19 Oct 2012 18:26:13 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: Word length and number of bits in an integer |
On Fri, Oct 19, 2012 at 05:58:11PM +0200, Dirk Laurie wrote:
> I need a routine for the exact smallest value B such that x>>B is zero,
> where x is a t_INT. SInce a may be very large indeed, I coded it thus:
>
> { bitsin(x) =
> my(w=32*(length(x)-1)); x>>=w;
> while(x, x>>=1; w+=1);
> w
> }
>
> I have two queries:
>
> 1. Am I missing some useful builtin function?
Yes, but I do not thing it is available in GP.
you can do
install(expi,lG);
bitsin(x)=expi(x)+1
Maybe we could add a function logint().
> 2. Can I rely on the words making up x to be 32-bit?
> If not, how do I find out the word length from inside GP?
You should not try :)
Cheers,
Bill.