![]() |
Enumerations | |
enum | bm::distance_metric { bm::COUNT_AND = set_COUNT_AND, bm::COUNT_XOR = set_COUNT_XOR, bm::COUNT_OR = set_COUNT_OR, bm::COUNT_SUB_AB = set_COUNT_SUB_AB, bm::COUNT_SUB_BA = set_COUNT_SUB_BA, bm::COUNT_A = set_COUNT_A, bm::COUNT_B = set_COUNT_B } |
Distance metrics codes defined for vectors A and B. More... | |
Functions | |
distance_metric | bm::operation2metric (set_operation op) |
Convert set operation into compatible distance metric. | |
template<class BV > | |
void | bm::distance_operation (const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end) |
Distance computing template function. | |
template<class BV > | |
void | bm::distance_operation_any (const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end) |
Distance screening template function. | |
template<class BV > | |
bm::id_t | bm::count_and (const BV &bv1, const BV &bv2) |
Computes bitcount of AND operation of two bitsets. | |
template<class BV > | |
bm::id_t | bm::any_and (const BV &bv1, const BV &bv2) |
Computes if there is any bit in AND operation of two bitsets. | |
template<class BV > | |
bm::id_t | bm::count_xor (const BV &bv1, const BV &bv2) |
Computes bitcount of XOR operation of two bitsets. | |
template<class BV > | |
bm::id_t | bm::any_xor (const BV &bv1, const BV &bv2) |
Computes if there is any bit in XOR operation of two bitsets. | |
template<class BV > | |
bm::id_t | bm::count_sub (const BV &bv1, const BV &bv2) |
Computes bitcount of SUB operation of two bitsets. | |
template<class BV > | |
bm::id_t | bm::any_sub (const BV &bv1, const BV &bv2) |
Computes if there is any bit in SUB operation of two bitsets. | |
template<class BV > | |
bm::id_t | bm::count_or (const BV &bv1, const BV &bv2) |
Computes bitcount of OR operation of two bitsets. | |
template<class BV > | |
bm::id_t | bm::any_or (const BV &bv1, const BV &bv2) |
Computes if there is any bit in OR operation of two bitsets. |
Algorithms to compute binary distance metrics
enum bm::distance_metric |
Distance metrics codes defined for vectors A and B.
COUNT_AND |
(A & B).count() |
COUNT_XOR |
(A ^ B).count() |
COUNT_OR |
(A | B).count() |
COUNT_SUB_AB |
(A - B).count() |
COUNT_SUB_BA |
(B - A).count() |
COUNT_A |
A.count(). |
COUNT_B |
B.count(). |
Definition at line 53 of file bmalgo_impl.h.
bm::id_t bm::any_and | ( | const BV & | bv1, | |
const BV & | bv2 | |||
) | [inline] |
Computes if there is any bit in AND operation of two bitsets.
bv1 | - Argument bit-vector. | |
bv2 | - Argument bit-vector. |
Definition at line 959 of file bmalgo_impl.h.
References bm::COUNT_AND, bm::distance_operation_any(), and bm::distance_metric_descriptor::result.
bm::id_t bm::any_or | ( | const BV & | bv1, | |
const BV & | bv2 | |||
) | [inline] |
Computes if there is any bit in OR operation of two bitsets.
bv1 | - Argument bit-vector. | |
bv2 | - Argument bit-vector. |
Definition at line 1061 of file bmalgo_impl.h.
References bm::COUNT_OR, bm::distance_operation_any(), and bm::distance_metric_descriptor::result.
bm::id_t bm::any_sub | ( | const BV & | bv1, | |
const BV & | bv2 | |||
) | [inline] |
Computes if there is any bit in SUB operation of two bitsets.
bv1 | - Argument bit-vector. | |
bv2 | - Argument bit-vector. |
Definition at line 1028 of file bmalgo_impl.h.
References bm::COUNT_SUB_AB, bm::distance_operation_any(), and bm::distance_metric_descriptor::result.
bm::id_t bm::any_xor | ( | const BV & | bv1, | |
const BV & | bv2 | |||
) | [inline] |
Computes if there is any bit in XOR operation of two bitsets.
bv1 | - Argument bit-vector. | |
bv2 | - Argument bit-vector. |
Definition at line 993 of file bmalgo_impl.h.
References bm::COUNT_XOR, bm::distance_operation_any(), and bm::distance_metric_descriptor::result.
bm::id_t bm::count_and | ( | const BV & | bv1, | |
const BV & | bv2 | |||
) | [inline] |
Computes bitcount of AND operation of two bitsets.
bv1 | - Argument bit-vector. | |
bv2 | - Argument bit-vector. |
Definition at line 943 of file bmalgo_impl.h.
References bm::COUNT_AND, bm::distance_operation(), and bm::distance_metric_descriptor::result.
Referenced by main().
bm::id_t bm::count_or | ( | const BV & | bv1, | |
const BV & | bv2 | |||
) | [inline] |
Computes bitcount of OR operation of two bitsets.
bv1 | - Argument bit-vector. | |
bv2 | - Argument bit-vector. |
Definition at line 1045 of file bmalgo_impl.h.
References bm::COUNT_OR, bm::distance_operation(), and bm::distance_metric_descriptor::result.
Referenced by bm::iterator_deserializer< BV, SerialIterator >::deserialize().
bm::id_t bm::count_sub | ( | const BV & | bv1, | |
const BV & | bv2 | |||
) | [inline] |
Computes bitcount of SUB operation of two bitsets.
bv1 | - Argument bit-vector. | |
bv2 | - Argument bit-vector. |
Definition at line 1011 of file bmalgo_impl.h.
References bm::COUNT_SUB_AB, bm::distance_operation(), and bm::distance_metric_descriptor::result.
bm::id_t bm::count_xor | ( | const BV & | bv1, | |
const BV & | bv2 | |||
) | [inline] |
Computes bitcount of XOR operation of two bitsets.
bv1 | - Argument bit-vector. | |
bv2 | - Argument bit-vector. |
Definition at line 977 of file bmalgo_impl.h.
References bm::COUNT_XOR, bm::distance_operation(), and bm::distance_metric_descriptor::result.
Referenced by bm::iterator_deserializer< BV, SerialIterator >::deserialize(), and main().
void bm::distance_operation | ( | const BV & | bv1, | |
const BV & | bv2, | |||
distance_metric_descriptor * | dmit, | |||
distance_metric_descriptor * | dmit_end | |||
) | [inline] |
Distance computing template function.
Function receives two bitvectors and an array of distance metrics (metrics pipeline). Function computes all metrics saves result into corresponding pipeline results (distance_metric_descriptor::result) An important detail is that function reuses metric descriptors, incrementing received values. It allows you to accumulate results from different calls in the pipeline.
bv1 | - argument bitvector 1 (A) | |
bv2 | - argument bitvector 2 (B) | |
dmit | - pointer to first element of metric descriptors array Input-Output parameter, receives metric code as input, computation is added to "result" field | |
dmit_end | - pointer to (last+1) element of metric descriptors array |
Definition at line 688 of file bmalgo_impl.h.
References BM_IS_GAP, BM_SET_MMX_GUARD, bm::combine_count_operation_with_block(), bm::distance_stage(), and bm::set_array_size.
Referenced by bm::count_and(), bm::count_or(), bm::count_sub(), bm::count_xor(), and main().
void bm::distance_operation_any | ( | const BV & | bv1, | |
const BV & | bv2, | |||
distance_metric_descriptor * | dmit, | |||
distance_metric_descriptor * | dmit_end | |||
) | [inline] |
Distance screening template function.
Function receives two bitvectors and an array of distance metrics (metrics pipeline). Function computes possybility of a metric(any bit) saves result into corresponding pipeline results (distance_metric_descriptor::result) An important detail is that function reuses metric descriptors, incrementing received values. It allows you to accumulate results from different calls in the pipeline.
bv1 | - argument bitvector 1 (A) | |
bv2 | - argument bitvector 2 (B) | |
dmit | - pointer to first element of metric descriptors array Input-Output parameter, receives metric code as input, computation is added to "result" field | |
dmit_end | - pointer to (last+1) element of metric descriptors array |
Definition at line 807 of file bmalgo_impl.h.
References BM_IS_GAP, BM_SET_MMX_GUARD, bm::combine_any_operation_with_block(), bm::distance_stage(), bm::distance_metric_descriptor::result, and bm::set_array_size.
Referenced by bm::any_and(), bm::any_or(), bm::any_sub(), and bm::any_xor().
distance_metric bm::operation2metric | ( | set_operation | op | ) | [inline] |
Convert set operation into compatible distance metric.
Definition at line 69 of file bmalgo_impl.h.
References BM_ASSERT, bm::is_const_set_operation(), bm::set_COUNT, and bm::set_COUNT_B.
Referenced by bm::iterator_deserializer< BV, SerialIterator >::deserialize().