Version 3.19.0
Jan 25, 2019Release Notes

BitMagic v.3.19.0 implements 3operand logical operations for Algebra of Sets.
TARGET := SRC1 opcode SRC2
. Both source operands remain unmutable. 3operand functions can now perform on the fly optimization/compression of the traget. In many cases 3operand operations are substantially faster than 2operand 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) }

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 bitvectors, 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.
 New method to insert bit
bvector<>::insert(..)
plus a sample to illustrate bitinsertions and bitshift. Bit insert is needed for fully editable succinct data structures and bittransposed containers and matrices.