Version 3.19.0

Jan 25, 2019

Release Notes

  1. BitMagic v.3.19.0 implements 3-operand logical operations for Algebra of Sets. TARGET := SRC1 opcode SRC2. Both source operands remain unmutable. 3-operand functions can now perform on the fly optimization/compression of the traget. In many cases 3-operand operations are substantially faster than 2-operand logic due to more effcient CPU data cache reuse and reduced number of memory copies. New operations use SSE2, SSE4.2 and AVX2 optimizations.

    Code example:

    #include "bm.h"
            bm::bvector<>   bv_T;
            bm::bvector<>   bv_A { 1, 2, 3 };
            bm::bvector<>   bv_B { 1, 2, 4 };
            bv_T.bit_or(bv_A, bv_B, bm::bvector<>::opt_compress); // bv_T :=  bv_A | bv_B (with on the fly compression)
            print_bvector(bv_T); // 1, 2, 3, 4 (size = 10)
  2. Documentation / examples improvements: Created new tutorial on BitMagic implementation of Algebra of Sets. New tutorial comes with an example, showing how to implement set theoretical operations on bit-vectors, groups of vector (aggregator), integer arrays, serialized/compressed BLOBs of data, STL iterators. New tutorial and example project illustrates more than 30 different APIs useful in different information retrieval or database situations.

    Doxygen formatted example

    GitHub example

  3. New method to insert bit bvector<>::insert(..) plus a sample to illustrate bit-insertions and bit-shift. Bit insert is needed for fully editable succinct data structures and bit-transposed containers and matrices.

    example 20

Download v 3.19.0