|
BitMagic-C++
|

Topics | |
| Binary-distance metrics | |
Data Structures | |
| class | bm::rank_compressor< BV > |
| Algorithms for rank compression of bit-vector. More... | |
| struct | bm::agg_run_options< OBvects, OCounts, OSearchMasks > |
| Aggregation options to control execution Default settings are to support only result bit-vector filters. More... | |
| class | bm::aggregator< BV > |
| Algorithms for fast aggregation of a group of bit-vectors. More... | |
| class | bm::random_subset< BV > |
| class | bm::sparse_vector_scanner< SV, S_FACTOR > |
| algorithms for sparse_vector scan/search More... | |
| class | bm::set2set_11_transform< SV > |
| Integer set to set transformation (functional image in groups theory) https://en.wikipedia.org/wiki/Image_(mathematics). More... | |
Functions | |
| template<class BV> | |
| BV::size_type | bm::count_and (const BV &bv1, const BV &bv2) BMNOEXCEPT |
| Computes bitcount of AND operation of two bitsets. | |
| template<class BV> | |
| BV::size_type | bm::any_and (const BV &bv1, const BV &bv2) BMNOEXCEPT |
| Computes if there is any bit in AND operation of two bitsets. | |
| template<class BV> | |
| bm::distance_metric_descriptor::size_type | bm::count_xor (const BV &bv1, const BV &bv2) BMNOEXCEPT |
| Computes bitcount of XOR operation of two bitsets. | |
| template<class BV> | |
| BV::size_type | bm::any_xor (const BV &bv1, const BV &bv2) BMNOEXCEPT |
| Computes if there is any bit in XOR operation of two bitsets. | |
| template<class BV> | |
| BV::size_type | bm::count_sub (const BV &bv1, const BV &bv2) BMNOEXCEPT |
| Computes bitcount of SUB operation of two bitsets. | |
| template<class BV> | |
| BV::size_type | bm::any_sub (const BV &bv1, const BV &bv2) BMNOEXCEPT |
| Computes if there is any bit in SUB operation of two bitsets. | |
| template<class BV> | |
| BV::size_type | bm::count_or (const BV &bv1, const BV &bv2) BMNOEXCEPT |
| Computes bitcount of OR operation of two bitsets. | |
| template<class BV> | |
| BV::size_type | bm::any_or (const BV &bv1, const BV &bv2) BMNOEXCEPT |
| Computes if there is any bit in OR operation of two bitsets. | |
| template<class BV, class Func> | |
| int | bm::for_each_bit (const BV &bv, Func &bit_functor) |
| bit-vector visitor scanner to traverse each 1 bit using C++ visitor | |
| template<class BV, class Func> | |
| int | bm::for_each_bit_range (const BV &bv, typename BV::size_type left, typename BV::size_type right, Func &bit_functor) |
| bit-vector range visitor to traverse each 1 bit | |
| template<class BV> | |
| int | bm::visit_each_bit (const BV &bv, void *handle_ptr, bit_visitor_callback_type callback_ptr) |
| bvector visitor scanner to traverse each 1 bit using C callback | |
| template<class BV> | |
| int | bm::visit_each_bit_range (const BV &bv, typename BV::size_type left, typename BV::size_type right, void *handle_ptr, bit_visitor_callback_type callback_ptr) |
| bvector visitor scanner to traverse each bits in range (C callback) | |
| template<typename BV, typename PairVect> | |
| void | bm::rank_range_split (const BV &bv, typename BV::size_type rank, PairVect &target_v) |
| Algorithm to identify bit-vector ranges (splits) for the rank. | |
| template<class BV, class It> | |
| void | bm::combine_or (BV &bv, It first, It last) |
| OR Combine bitvector and the iterable sequence. | |
| template<class BV, class It> | |
| void | bm::combine_xor (BV &bv, It first, It last) |
| XOR Combine bitvector and the iterable sequence. | |
| template<class BV, class It> | |
| void | bm::combine_sub (BV &bv, It first, It last) |
| SUB Combine bitvector and the iterable sequence. | |
| template<class BV, class It> | |
| void | bm::combine_and_sorted (BV &bv, It first, It last) |
| AND Combine bitvector and the iterable sequence. | |
| template<class BV, class It> | |
| void | bm::combine_and (BV &bv, It first, It last) |
| AND Combine bitvector and the iterable sequence. | |
| template<class BV> | |
| BV::size_type | bm::count_intervals (const BV &bv) |
| Compute number of bit intervals (GAPs) in the bitvector. | |
| template<typename BV, class It> | |
| void | bm::export_array (BV &bv, It first, It last) |
| Export bitset from an array of binary data representing the bit vector. | |
Aggregator traits and control constants | |
| typedef bm::agg_run_options< agg_disable_result_bvectors, agg_disable_counts > | bm::agg_opt_disable_bvects_and_counts |
| Pre-defined aggregator options to disable both intermediate results and counts. | |
| typedef bm::agg_run_options< agg_disable_result_bvectors, agg_compute_counts > | bm::agg_opt_only_counts |
| Pre-defined aggregator options for counts-only (results dropped) operation. | |
| typedef bm::agg_run_options< agg_produce_result_bvectors, agg_compute_counts > | bm::agg_opt_bvect_and_counts |
| Pre-defined aggregator options for results plus counts operation. | |
| template<typename Agg, typename It> | |
| void | bm::aggregator_pipeline_execute (It first, It last) |
| Experimental method ro run multiple aggregators in sync. | |
| const bool | bm::agg_produce_result_bvectors = true |
| const bool | bm::agg_disable_result_bvectors = false |
| const bool | bm::agg_compute_counts = true |
| const bool | bm::agg_disable_counts = false |
| const bool | bm::agg_disable_search_masks = false |
Set algebra algorithms using bit-vectors, arrays. Binary metrics and distances. Random sub-sets.
| typedef bm::agg_run_options<agg_produce_result_bvectors, agg_compute_counts> bm::agg_opt_bvect_and_counts |
Pre-defined aggregator options for results plus counts operation.
Definition at line 103 of file bmaggregator.h.
| typedef bm::agg_run_options<agg_disable_result_bvectors, agg_disable_counts> bm::agg_opt_disable_bvects_and_counts |
Pre-defined aggregator options to disable both intermediate results and counts.
Definition at line 86 of file bmaggregator.h.
| typedef bm::agg_run_options<agg_disable_result_bvectors, agg_compute_counts> bm::agg_opt_only_counts |
Pre-defined aggregator options for counts-only (results dropped) operation.
Definition at line 95 of file bmaggregator.h.
| void bm::aggregator_pipeline_execute | ( | It | first, |
| It | last ) |
Experimental method ro run multiple aggregators in sync.
Pipeleine algorithm walts the sequence of iterators (pointers on aggregators) and run them all via aggregator<>::run_step() method
| first | - iterator (pointer on aggregator) |
| last | - iterator (pointer on aggregator) |
Definition at line 874 of file bmaggregator.h.
References set_sub_array_size.
Referenced by DNA_FingerprintScanner< bm::bvector<> >::FindCollection().
| BV::size_type bm::any_and | ( | const BV & | bv1, |
| const BV & | bv2 ) |
Computes if there is any bit in AND operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 62 of file bmalgo.h.
References BMNOEXCEPT, COUNT_AND, distance_operation_any(), and bm::distance_metric_descriptor::result.
| BV::size_type bm::any_or | ( | const BV & | bv1, |
| const BV & | bv2 ) |
Computes if there is any bit in OR operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 165 of file bmalgo.h.
References BMNOEXCEPT, COUNT_OR, distance_operation_any(), and bm::distance_metric_descriptor::result.
| BV::size_type bm::any_sub | ( | const BV & | bv1, |
| const BV & | bv2 ) |
Computes if there is any bit in SUB operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 132 of file bmalgo.h.
References BMNOEXCEPT, COUNT_SUB_AB, distance_operation_any(), and bm::distance_metric_descriptor::result.
| BV::size_type bm::any_xor | ( | const BV & | bv1, |
| const BV & | bv2 ) |
Computes if there is any bit in XOR operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 97 of file bmalgo.h.
References BMNOEXCEPT, COUNT_XOR, distance_operation_any(), and bm::distance_metric_descriptor::result.
| void bm::combine_and | ( | BV & | bv, |
| It | first, | ||
| It | last ) |
AND Combine bitvector and the iterable sequence.
Algorithm combines bvector with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.
| bv | - destination bitvector |
| first | - first element of the iterated sequence |
| last | - last element of the iterated sequence |
Definition at line 1365 of file bmalgo_impl.h.
References combine_or().
Referenced by bm::aggregator< BV >::combine_and(), DemoAND(), and main().
| void bm::combine_and_sorted | ( | BV & | bv, |
| It | first, | ||
| It | last ) |
AND Combine bitvector and the iterable sequence.
Algorithm combines bvector with sorted sequence of integers (represents another set).
| bv | - destination bitvector |
| first | - first element of the iterated sequence |
| last | - last element of the iterated sequence |
Definition at line 1333 of file bmalgo_impl.h.
References BM_ASSERT.
Referenced by main().
| void bm::combine_or | ( | BV & | bv, |
| It | first, | ||
| It | last ) |
OR Combine bitvector and the iterable sequence.
Algorithm combines bvector with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.
| bv | - destination bitvector |
| first | - first element of the iterated sequence |
| last | - last element of the iterated sequence |
Definition at line 1080 of file bmalgo_impl.h.
References block_range_scan(), BM_ASSERT, BMGAP_PTR, gap_limit(), gap_set_value(), bm::bvector< Alloc >::get_blocks_manager(), id_max, set_block_mask, set_block_shift, set_word_mask, set_word_shift, and bm::bvector< Alloc >::size().
Referenced by combine_and(), bm::aggregator< BV >::combine_or(), bm::aggregator< BV >::combine_or(), combine_or_test(), DemoOR(), main(), speed_test_sv_index(), and speed_test_vect_index().
| void bm::combine_sub | ( | BV & | bv, |
| It | first, | ||
| It | last ) |
SUB Combine bitvector and the iterable sequence.
Algorithm combines bvector with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.
| bv | - destination bitvector |
| first | - first element of the iterated sequence |
| last | - last element of the iterated sequence |
Definition at line 1248 of file bmalgo_impl.h.
References block_range_scan(), BM_ASSERT, BMGAP_PTR, gap_limit(), gap_set_value(), gap_test_unr(), id_max, set_block_mask, set_block_shift, set_word_mask, and set_word_shift.
| void bm::combine_xor | ( | BV & | bv, |
| It | first, | ||
| It | last ) |
XOR Combine bitvector and the iterable sequence.
Algorithm combines bvector with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.
| bv | - destination bitvector |
| first | - first element of the iterated sequence |
| last | - last element of the iterated sequence |
Definition at line 1161 of file bmalgo_impl.h.
References block_range_scan(), BM_ASSERT, BMGAP_PTR, gap_limit(), gap_set_value(), gap_test_unr(), bm::bvector< Alloc >::get_blocks_manager(), id_max, set_block_mask, set_block_shift, set_word_mask, and set_word_shift.
Referenced by DemoXOR().
| BV::size_type bm::count_and | ( | const BV & | bv1, |
| const BV & | bv2 ) |
Computes bitcount of AND operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 49 of file bmalgo.h.
References BMNOEXCEPT, and distance_and_operation().
Referenced by assign_to_best_cluster(), bv_count_and(), compute_and_sim_row(), CSeqGroup::count_and_union_sync(), main(), main(), and process_operation().
| BV::size_type bm::count_intervals | ( | const BV & | bv | ) |
Compute number of bit intervals (GAPs) in the bitvector.
Algorithm traverses bit vector and count number of uninterrupted intervals of 1s and 0s.
For example: empty vector - 1 interval 00001111100000 - gives us 3 intervals 10001111100000 - 4 intervals 00000000000000 - 1 interval 11111111111111 - 1 interval
Definition at line 1389 of file bmalgo_impl.h.
References for_each_block(), and id_max.
| BV::size_type bm::count_or | ( | const BV & | bv1, |
| const BV & | bv2 ) |
Computes bitcount of OR operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 149 of file bmalgo.h.
References BMNOEXCEPT, COUNT_OR, distance_operation(), and bm::distance_metric_descriptor::result.
Referenced by process_operation().
| BV::size_type bm::count_sub | ( | const BV & | bv1, |
| const BV & | bv2 ) |
Computes bitcount of SUB operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 115 of file bmalgo.h.
References BMNOEXCEPT, COUNT_SUB_AB, distance_operation(), and bm::distance_metric_descriptor::result.
Referenced by process_operation().
| bm::distance_metric_descriptor::size_type bm::count_xor | ( | const BV & | bv1, |
| const BV & | bv2 ) |
Computes bitcount of XOR operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 81 of file bmalgo.h.
References BMNOEXCEPT, COUNT_XOR, distance_operation(), and bm::distance_metric_descriptor::result.
Referenced by main(), and process_operation().
| void bm::export_array | ( | BV & | bv, |
| It | first, | ||
| It | last ) |
Export bitset from an array of binary data representing the bit vector.
Input array can be array of ints, chars or other native C types. Method works with iterators, which makes it compatible with STL containers and C arrays
| bv | - destination bitvector |
| first | - first element of the iterated sequence |
| last | - last element of the iterated sequence |
Definition at line 1423 of file bmalgo_impl.h.
References BM_ASSERT, BM_BIT, set_block_size, and set_total_blocks.
| int bm::for_each_bit | ( | const BV & | bv, |
| Func & | bit_functor ) |
bit-vector visitor scanner to traverse each 1 bit using C++ visitor
| bv | - bit vector to scan |
| bit_functor | - visitor: should support add_bits(), add_range() |
Definition at line 202 of file bmalgo.h.
References avx2_test_all_zero_wave(), BM_SCANNER_OP, FULL_BLOCK_FAKE_ADDR, FULL_SUB_BLOCK_REAL_ADDR, bm::bvector< Alloc >::get_blocks_manager(), set_sub_array_size, and sse42_test_all_zero_wave().
Referenced by bm::rank_compressor< BV >::compress_by_source(), main(), and visit_each_bit().
| int bm::for_each_bit_range | ( | const BV & | bv, |
| typename BV::size_type | left, | ||
| typename BV::size_type | right, | ||
| Func & | bit_functor ) |
bit-vector range visitor to traverse each 1 bit
| bv | - bit vector to scan |
| right | - start of closed interval [from..to] |
| left | - end of close interval [from..to] |
| bit_functor | - visitor: should support add_bits(), add_range() |
Definition at line 266 of file bmalgo.h.
References BM_ASSERT, for_each_bit_range_no_check(), id_max, and xor_swap().
Referenced by main(), and visit_each_bit_range().
| void bm::rank_range_split | ( | const BV & | bv, |
| typename BV::size_type | rank, | ||
| PairVect & | target_v ) |
Algorithm to identify bit-vector ranges (splits) for the rank.
Rank range split algorithm walks the bit-vector to create list of non-overlapping ranges [s1..e1],[s2..e2]...[sN...eN] with requested (rank) number of 1 bits. All ranges should be the same popcount weight, except the last one, which may have less. Scan is progressing from left to right so result ranges will be naturally sorted.
| bv | - bit vector to perform the range split scan |
| rank | - requested number of bits in each range if 0 it will create single range [first..last] to cover the whole bv |
| target_v | - [out] STL(or STL-like) vector of pairs to keep pairs results |
Definition at line 394 of file bmalgo.h.
Referenced by compute_adaptive_rsc_histogram(), compute_jaccard_clusters(), count_kmers_parallel(), count_kmers_parallel(), and main().
| int bm::visit_each_bit | ( | const BV & | bv, |
| void * | handle_ptr, | ||
| bit_visitor_callback_type | callback_ptr ) |
bvector visitor scanner to traverse each 1 bit using C callback
| bv | - bit vector to scan |
| handle_ptr | - handle to private memory used by callback |
| callback_ptr | - callback function |
Definition at line 336 of file bmalgo.h.
References for_each_bit().
Referenced by main().
| int bm::visit_each_bit_range | ( | const BV & | bv, |
| typename BV::size_type | left, | ||
| typename BV::size_type | right, | ||
| void * | handle_ptr, | ||
| bit_visitor_callback_type | callback_ptr ) |
bvector visitor scanner to traverse each bits in range (C callback)
| bv | - bit vector to scan |
| left | - from [left..right] |
| right | - to [left..right] |
| handle_ptr | - handle to private memory used by callback |
| callback_ptr | - callback function |
Definition at line 362 of file bmalgo.h.
References for_each_bit_range().
Referenced by main().
| const bool bm::agg_compute_counts = true |
Definition at line 53 of file bmaggregator.h.
| const bool bm::agg_disable_counts = false |
Definition at line 54 of file bmaggregator.h.
| const bool bm::agg_disable_result_bvectors = false |
Definition at line 52 of file bmaggregator.h.
| const bool bm::agg_disable_search_masks = false |
Definition at line 55 of file bmaggregator.h.
| const bool bm::agg_produce_result_bvectors = true |
Definition at line 51 of file bmaggregator.h.