bitwise: fast multi-dimensional unboxed bit packed Bool arrays

[ bit-vectors, bsd3, data, data-structures, library ] [ Propose Tags ]

Unboxed multidimensional bit packed Bool arrays with fast aggregate operations based on lifting Bool operations to bitwise operations.

There are many other bit packed structures out there, but none met all of these requirements:

  1. unboxed bit packed Bool array,

  2. multi-dimensional indexing,

  3. fast (de)serialization, or interoperable with foreign code,

  4. fast aggregate operations (fold, map, zip).

Quick tour of the bitwise library:

Data.Bits.Bitwise
Lift boolean operations on Bool to bitwise operations on Data.Bits.Bits.
Data.Array.BitArray
Immutable bit arrays.
Data.Array.BitArray.ST
Mutable bit arrays in Control.Monad.ST.ST.
Data.Array.BitArray.IO
Mutable bit arrays in IO.
Data.Array.BitArray.ByteString
(De)serialization.
Codec.Image.PBM
Portable bitmap monochrome 2D image format.

Very rough performance benchmarks:

  • immutable random access single bit reads: BitArray ix is about 40% slower than UArray ix Bool,

  • Control.Monad.ST.ST mutable random access single bit reads: STBitArray s ix is about the same as STUArray s ix Bool,

  • immutable map Bool -> Bool: BitArray ix is about 85x faster than UArray ix Bool,

  • immutable zipWith Bool -> Bool -> Bool: BitArray ix is about 1300x faster than UArray ix Bool.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1, 0.1.0.1, 0.1.0.2, 0.1.1, 0.1.1.1, 0.2, 1.0.0.1
Dependencies array (<0.6), base (>=2.1 && <4.12), bytestring (<0.11) [details]
License BSD-3-Clause
Copyright (c) 2012,2016,2018 Claude Heiland-Allen
Author Claude Heiland-Allen
Maintainer claude@mathr.co.uk
Category Data, Data Structures, Bit Vectors
Home page https://code.mathr.co.uk/bitwise
Source repo head: git clone https://code.mathr.co.uk/bitwise.git
this: git clone https://code.mathr.co.uk/bitwise.git(tag v0.2)
Uploaded by ClaudeHeilandAllen at 2018-04-26T05:41:52Z
Distributions Arch:1.0.0.1, NixOS:1.0.0.1
Reverse Dependencies 6 direct, 17 indirect [details]
Downloads 12201 total (62 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2018-04-29 [all 1 reports]

Readme for bitwise-0.2

[back to package description]
Interactive interpreted usage without having installed first
requires adding a search path for the respective environment:

  hugs -98 -P:src:base21
  ghci-7.0.4 -isrc:base40
  ghci-7.4.1 -isrc:base45
  ghci-7.8.1 -isrc:base47

ghc < 7.6 has not been tested recently, reports welcome.