A library of bit operations implemented on top of the gmp (Gnu Multi Precision) library. For reasons of efficiency, the bit operations [clrbit, setbit, and, 'or', xor, not, set] update the state of the first argument. Only BitVector.new creates a new BitVector and returns it. Array-like dot operations are provided in the following way: X.N provides the Nth bit of BitVector X. X.N:=Y sets the Nth bit of X to Y provided Y is equal to 0 or 1, and if used as a function will return the value of X.N before the assignment.