Basic operations on elementary data structures

`MSB`: put a one in the most significant bit of an int.`TOP`: largest representable positive number.`NEXT(j,b)`: right shift the one bit in`b`and increments`j`if the last bit in`b`is one.

Polylib contains a large amount of relational, algebraical or structural operations whith one, two or more operands. The implementation of these operations is in general C functions, but some of them are implemented as C definitions like the one described earlier for some bit level manipulation.

Here are some examples of the operations implemented in Polylib:

- Comparing two values.
**intcompare**(const void*a, const void*b) - Finding the list of the divisors of a given integer.
**allfactors**(int num) - Search for
the greatest integer value with the power two less then a given integer.
int

**sqrt**(int i) - Least Common Multiple of two values.
value*

**Lcm**(value i, value j) - Greatest Common Divisor of two values.
value*

**Gcd**(value i, value j) - Factorial for a integer value.
value*

**Factorial**(int n) - Number of ways to choose 'b' items from 'a' items.
value*

**CNP**(int a, int b)