Version 3.19.0
Jan 25, 2019Release Notes
-
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) }
-
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.
- 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.