need a function

Jack Brennen jb at
Sat Jun 14 09:26:46 CEST 2008

If you're permitted a lookup table of size 32, just use TAB[n%37];
I'm sure you can figure out how to fill in TAB[].  (The value of
the function for non-powers-of-two will be pretty much useless,
but if you know the input is a power of two, it works good.

n%37 can be written as n-(n/37)*37, if / throws away the remainder.

If you don't require the function to be "small":

   f(n) = (n/2)%2+

    Use the substitution a%b = a-(a/b)*b.

    (Again, assuming that / throws away the remainder.)

Brendan McKay wrote:
> Hi seqfans.  This little problem might amuse someone and the answer
> might even be useful.
> We are considering arithmetic in the non-negative integers mod 2^32.
> The problem is, define a function f(n) using only +-*/ (where / throws
> away the remainder) such that f(2^i) = i for i=0,1,...,31.
> If that is too onerous, you can also use bit-wise boolean operations.
> The corresponding problem for 2^64 is also of interest.
> Cheers, Brendan.

More information about the SeqFan mailing list