$s (      !"#$%&'(c) Edward Kmett 2013-2014BSD3Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy ;PCalculate the least significant set bit using a debruijn multiplication table. NB:7 The result of this function is undefined when given 0.(Calculate the number of trailing 0 bits.&Calculate the number of leading zeros. 'Calculate the most significant set bit. 2Shift Right Logical (i.e., without sign extension)NB: When used on negative (s, hilarity may ensue.)*+ ,-./01234   )*+ ,-./01234(c) Edward Kmett 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portable Safe-Inferred+246=HKMGetq something from byte-aligned storage, starting on the next byte and discarding any left over bits in the buffer.NB: Using any operation from 5 other than checking 6 or 7( will implicitly perform this operation.Get# a single bit, consuming an entire byte if the bit buffer is empty0Emit any remaining contents from the bit buffer. Any use of the combinators from 8 (including 9) will cause this to happen.Put all the bits without a 9Put" a single bit, emitting an entire byte if the bit buffer is fullPut a (closed) range of bits %putBitsFrom from b = putBits from 0 b:;<=>?@ABC  :;<=>?@ABCBSD3 experimental non-portableNoneBMEElias Delta codes the position of the most significant bit in Elias .;Elias Gamma codes the position of the most significant in .Representation for Elias  and  codes. A positive integer n is encoded by encoding the position of its most significant bit, and then the binary representation of the rest of the number.Unary-coded integers/runPutL . runEncode $ encode (Unary 1) >> flush"\128"/runPutL . runEncode $ encode (Unary 7) >> flush"\254""Unaligned codes !"#$%D&'EF !"#$%&'"#$% !&'  !"#$%D&'EFG      !!"##$%&'()*+,-./0123456789:;<:;=:;>:?@:?ABCDEFGHIJKLMNObits-0.4Data.Bits.ExtrasData.Bits.CodingData.Bits.Codedbase Data.BitszeroBitsRankedlsbranknlzlog2w8w16w32w64msb assignBitoneBitssrlCoding runCoding getAlignedgetBitgetBits getBitsFrom putAligned putUnalignedputBitputBits putBitsFromDeltaGammaEliasunEliasUnaryunUnaryCodedencode encodeManydecode runEncode runDecode integer-gmpGHC.Integer.TypeIntegerdebruijn_log32debruijn_lsb32debruijn_lsb64inlinePerformIO $fRankedInt8 $fRankedInt16 $fRankedInt32 $fRankedInt64 $fRankedWord8$fRankedWord16$fRankedWord32$fRankedWord64bytes-0.14.1.1Data.Bytes.GetMonadGet remainingisEmptyData.Bytes.PutMonadPutflush$fMonadPutCoding$fMonadGetCoding$fMonadReadereCoding$fMonadStatesCoding$fMonadTransCoding$fMonadPlusCoding$fAlternativeCoding $fMonadCoding$fApplicativeCoding$fFunctorCodingones $fCodedElias $fCodedUnary