úÎ&è"uL      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK(c) Edward Kmett 2013-2014BSD3Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy BPCalculate 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 Ls, hilarity may ensue.MNO P   MNO P(c) Edward Kmett 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe09;<=DORTGetq something from byte-aligned storage, starting on the next byte and discarding any left over bits in the buffer.NB: Using any operation from Q other than checking R or S( 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 T (including U) will cause this to happen.Put all the bits without a UPut" a single bit, emitting an entire byte if the bit buffer is full Put a (closed) range of bits! %putBitsFrom from b = putBits from 0 b !"#$%&'()*+  !  ! !"#$%&'()*+BSD3 experimental non-portableNoneIT,EElias Delta codes the position of the most significant bit in Elias -.-;Elias Gamma codes the position of the most significant in 1..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.1Unary-coded integers/runPutL . runEncode $ encode (Unary 1) >> flush"\128"/runPutL . runEncode $ encode (Unary 7) >> flush"\254"4Unaligned codes,-./01234567V89:;,-./01234576894567123./0-,89 ,-./01234567V89:;W      !"#$%&'()*+,-./012334556789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXVWYVWZV[\V[]^_!bits-0.5.1-15WIbuoUpQ08sL4P8tvI93Data.Bits.ExtrasData.Bits.CodingData.Bits.Codedbase Data.BitszeroBitsRankedlsbranknlzlog2w8w16w32w64msb assignBitoneBitssrl $fRankedInt8 $fRankedInt16 $fRankedInt32 $fRankedInt64 $fRankedWord8$fRankedWord16$fRankedWord32$fRankedWord64Coding runCoding getAlignedgetBitgetBits getBitsFrom putAligned putUnalignedputBitputBits putBitsFrom$fMonadPutCoding$fMonadGetCoding$fMonadReadereCoding$fMonadStatesCoding$fMonadTransCoding$fMonadPlusCoding$fAlternativeCoding $fMonadCoding$fApplicativeCoding$fFunctorCodingDeltaGammaEliasunEliasUnaryunUnaryCodedencode encodeManydecode runEncode runDecode $fCodedElias $fCodedUnary $fEqUnary $fOrdUnary $fReadUnary $fShowUnary $fNumUnary$fIntegralUnary $fRealUnary $fEnumUnary $fEqElias $fOrdElias $fReadElias $fShowElias $fNumElias $fRealElias$fIntegralElias $fEnumElias integer-gmpGHC.Integer.TypeIntegerdebruijn_log32debruijn_lsb32debruijn_lsb64inlinePerformIO#bytes-0.15.3-LHS6IWyQIRH2ds3K2gPlH4Data.Bytes.GetMonadGet remainingisEmptyData.Bytes.PutMonadPutflushones