23
23
<div class="contents">
24
<h1>Set algorithms<br/>
24
<h1>Distance metrics<br/>
26
[<a class="el" href="a00118.html">BitMagic C++ Library</a>]</small>
26
[<a class="el" href="a00124.html">Set algorithms</a>]</small>
28
28
<p><div class="dynheader">
29
Collaboration diagram for Set algorithms:</div>
29
Collaboration diagram for Distance metrics:</div>
30
30
<div class="dynsection">
31
31
<center><table><tr><td><img src="a00125.png" border="0" alt="" usemap="#a00125_map"/>
32
32
<map name="a00125_map" id="a00125">
33
<area shape="rect" href="a00118.html" title="For more information please visit: http://bmagic.sourceforge.net." alt="" coords="5,5,149,35"/><area shape="rect" href="a00126.html" title="Distance metrics" alt="" coords="352,5,472,35"/></map></td></tr></table></center>
33
<area shape="rect" href="a00124.html" title="Set algorithms" alt="" coords="7,5,111,35"/></map></td></tr></table></center>
36
36
<table border="0" cellpadding="0" cellspacing="0">
37
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
38
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html">bm::random_subset< BV ></a></td></tr>
39
<tr><td colspan="2"><h2>Modules</h2></td></tr>
40
<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html">Distance metrics</a></td></tr>
37
<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
38
<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html#gac38d64c8b27b652413a664cddd4d40ab">bm::distance_metric</a> { <br/>
39
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40abacb39376469ba778e9a9099ddbae5e7ce">bm::COUNT_AND</a> = set_COUNT_AND,
40
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40aba3e4861dde6e1179457ee0d3502ae8061">bm::COUNT_XOR</a> = set_COUNT_XOR,
41
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40abad0bd2d56c8ebd03f55c01b3cc6faaaeb">bm::COUNT_OR</a> = set_COUNT_OR,
42
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40aba9c101dab8904c0432f72ccce0a207e62">bm::COUNT_SUB_AB</a> = set_COUNT_SUB_AB,
44
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40abafa036fb9d54bc659ed3c9e4185ccf400">bm::COUNT_SUB_BA</a> = set_COUNT_SUB_BA,
45
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40abaac7947d53eb3acf81251ee4130e6a4a2">bm::COUNT_A</a> = set_COUNT_A,
46
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40abac6dbadf2ab9405daa47dc0f10d082516">bm::COUNT_B</a> = set_COUNT_B
49
<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Distance metrics codes defined for vectors A and B. </p>
50
<a href="a00125.html#gac38d64c8b27b652413a664cddd4d40ab">More...</a><br/></td></tr>
41
51
<tr><td colspan="2"><h2>Functions</h2></td></tr>
42
<tr><td class="memTemplParams" colspan="2">template<class BV , class It > </td></tr>
43
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga54ff78528c99ae3ca443eb99ba44785b">bm::combine_or</a> (BV &bv, It first, It last)</td></tr>
44
<tr><td class="mdescLeft"> </td><td class="mdescRight">OR Combine bitvector and the iterable sequence. <a href="#ga54ff78528c99ae3ca443eb99ba44785b"></a><br/></td></tr>
45
<tr><td class="memTemplParams" colspan="2">template<class BV , class It > </td></tr>
46
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga3cb362aee03de6a321495100ae5c8375">bm::combine_xor</a> (BV &bv, It first, It last)</td></tr>
47
<tr><td class="mdescLeft"> </td><td class="mdescRight">XOR Combine bitvector and the iterable sequence. <a href="#ga3cb362aee03de6a321495100ae5c8375"></a><br/></td></tr>
48
<tr><td class="memTemplParams" colspan="2">template<class BV , class It > </td></tr>
49
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gab88c5bf51484323e0139aa789d7f0b98">bm::combine_sub</a> (BV &bv, It first, It last)</td></tr>
50
<tr><td class="mdescLeft"> </td><td class="mdescRight">SUB Combine bitvector and the iterable sequence. <a href="#gab88c5bf51484323e0139aa789d7f0b98"></a><br/></td></tr>
51
<tr><td class="memTemplParams" colspan="2">template<class BV , class It > </td></tr>
52
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga22922f71bd1eec8a5b663dc77b90cf6c">bm::combine_and_sorted</a> (BV &bv, It first, It last)</td></tr>
53
<tr><td class="mdescLeft"> </td><td class="mdescRight">AND Combine bitvector and the iterable sequence. <a href="#ga22922f71bd1eec8a5b663dc77b90cf6c"></a><br/></td></tr>
54
<tr><td class="memTemplParams" colspan="2">template<class BV , class It > </td></tr>
55
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga819bdab57a624a08456ea79161b9c5d2">bm::combine_and</a> (BV &bv, It first, It last)</td></tr>
56
<tr><td class="mdescLeft"> </td><td class="mdescRight">AND Combine bitvector and the iterable sequence. <a href="#ga819bdab57a624a08456ea79161b9c5d2"></a><br/></td></tr>
57
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
58
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00116.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gac7a59d3bc266310ec127cb3efadb0d33">bm::count_intervals</a> (const BV &bv)</td></tr>
59
<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute number of bit intervals (GAPs) in the bitvector. <a href="#gac7a59d3bc266310ec127cb3efadb0d33"></a><br/></td></tr>
60
<tr><td class="memTemplParams" colspan="2">template<class BV , class It > </td></tr>
61
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gacd88ed9539553dd93419b7029e8a4584">bm::export_array</a> (BV &bv, It first, It last)</td></tr>
62
<tr><td class="mdescLeft"> </td><td class="mdescRight">Export bitset from an array of binary data representing the bit vector. <a href="#gacd88ed9539553dd93419b7029e8a4584"></a><br/></td></tr>
52
<tr><td class="memItemLeft" align="right" valign="top">distance_metric </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html#ga158946ea41ca66c3e1bca62c92684788">bm::operation2metric</a> (set_operation op)</td></tr>
53
<tr><td class="mdescLeft"> </td><td class="mdescRight">Convert set operation into compatible distance metric. <a href="#ga158946ea41ca66c3e1bca62c92684788"></a><br/></td></tr>
54
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
55
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga815fef76f02576ab9ab58de0a45d8a4b">bm::distance_operation</a> (const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)</td></tr>
56
<tr><td class="mdescLeft"> </td><td class="mdescRight">Distance computing template function. <a href="#ga815fef76f02576ab9ab58de0a45d8a4b"></a><br/></td></tr>
57
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
58
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gad3ce9974302b0da70c5f029f620409f4">bm::distance_and_operation</a> (const BV &bv1, const BV &bv2)</td></tr>
59
<tr><td class="mdescLeft"> </td><td class="mdescRight">Distance AND computing template function. <a href="#gad3ce9974302b0da70c5f029f620409f4"></a><br/></td></tr>
60
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
61
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gaa66525fd7a3f823d73678252a235982e">bm::distance_operation_any</a> (const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)</td></tr>
62
<tr><td class="mdescLeft"> </td><td class="mdescRight">Distance screening template function. <a href="#gaa66525fd7a3f823d73678252a235982e"></a><br/></td></tr>
63
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
64
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gae451cb4b87e8c0859b0614d2ffb99737">bm::count_and</a> (const BV &bv1, const BV &bv2)</td></tr>
65
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes bitcount of AND operation of two bitsets. <a href="#gae451cb4b87e8c0859b0614d2ffb99737"></a><br/></td></tr>
66
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
67
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga2d5393e05bcfc540840a4cee67fb771f">bm::any_and</a> (const BV &bv1, const BV &bv2)</td></tr>
68
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes if there is any bit in AND operation of two bitsets. <a href="#ga2d5393e05bcfc540840a4cee67fb771f"></a><br/></td></tr>
69
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
70
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gafc64a082dcaee07f70f7faf3e24f844e">bm::count_xor</a> (const BV &bv1, const BV &bv2)</td></tr>
71
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes bitcount of XOR operation of two bitsets. <a href="#gafc64a082dcaee07f70f7faf3e24f844e"></a><br/></td></tr>
72
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
73
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga2d63f41244b82d233acb53d88b326b82">bm::any_xor</a> (const BV &bv1, const BV &bv2)</td></tr>
74
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes if there is any bit in XOR operation of two bitsets. <a href="#ga2d63f41244b82d233acb53d88b326b82"></a><br/></td></tr>
75
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
76
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga902d8c1cd1f8a2538cd47d47f5d8d605">bm::count_sub</a> (const BV &bv1, const BV &bv2)</td></tr>
77
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes bitcount of SUB operation of two bitsets. <a href="#ga902d8c1cd1f8a2538cd47d47f5d8d605"></a><br/></td></tr>
78
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
79
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gabde2e210b9b1edd190e1f5a9ff22344c">bm::any_sub</a> (const BV &bv1, const BV &bv2)</td></tr>
80
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes if there is any bit in SUB operation of two bitsets. <a href="#gabde2e210b9b1edd190e1f5a9ff22344c"></a><br/></td></tr>
81
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
82
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga803c564668703fc3bf80067570c2c905">bm::count_or</a> (const BV &bv1, const BV &bv2)</td></tr>
83
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes bitcount of OR operation of two bitsets. <a href="#ga803c564668703fc3bf80067570c2c905"></a><br/></td></tr>
84
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
85
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gaeda4f0cf54aa464cec09e740100caa79">bm::any_or</a> (const BV &bv1, const BV &bv2)</td></tr>
86
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes if there is any bit in OR operation of two bitsets. <a href="#gaeda4f0cf54aa464cec09e740100caa79"></a><br/></td></tr>
64
88
<hr/><a name="_details"></a><h2>Detailed Description</h2>
65
<p>Set algorithms </p>
89
<p>Algorithms to compute binary distance metrics </p>
90
<hr/><h2>Enumeration Type Documentation</h2>
91
<a class="anchor" id="gac38d64c8b27b652413a664cddd4d40ab"></a><!-- doxytag: member="bm::distance_metric" ref="gac38d64c8b27b652413a664cddd4d40ab" args="" -->
93
<div class="memproto">
94
<table class="memname">
96
<td class="memname">enum <a class="el" href="a00125.html#gac38d64c8b27b652413a664cddd4d40ab">bm::distance_metric</a></td>
102
<p>Distance metrics codes defined for vectors A and B. </p>
103
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
104
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abacb39376469ba778e9a9099ddbae5e7ce"></a><!-- doxytag: member="COUNT_AND" ref="ggac38d64c8b27b652413a664cddd4d40abacb39376469ba778e9a9099ddbae5e7ce" args="" -->COUNT_AND</em> </td><td>
105
<p>(A & B).count() </p>
107
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40aba3e4861dde6e1179457ee0d3502ae8061"></a><!-- doxytag: member="COUNT_XOR" ref="ggac38d64c8b27b652413a664cddd4d40aba3e4861dde6e1179457ee0d3502ae8061" args="" -->COUNT_XOR</em> </td><td>
108
<p>(A ^ B).count() </p>
110
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abad0bd2d56c8ebd03f55c01b3cc6faaaeb"></a><!-- doxytag: member="COUNT_OR" ref="ggac38d64c8b27b652413a664cddd4d40abad0bd2d56c8ebd03f55c01b3cc6faaaeb" args="" -->COUNT_OR</em> </td><td>
111
<p>(A | B).count() </p>
113
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40aba9c101dab8904c0432f72ccce0a207e62"></a><!-- doxytag: member="COUNT_SUB_AB" ref="ggac38d64c8b27b652413a664cddd4d40aba9c101dab8904c0432f72ccce0a207e62" args="" -->COUNT_SUB_AB</em> </td><td>
114
<p>(A - B).count() </p>
116
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abafa036fb9d54bc659ed3c9e4185ccf400"></a><!-- doxytag: member="COUNT_SUB_BA" ref="ggac38d64c8b27b652413a664cddd4d40abafa036fb9d54bc659ed3c9e4185ccf400" args="" -->COUNT_SUB_BA</em> </td><td>
117
<p>(B - A).count() </p>
119
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abaac7947d53eb3acf81251ee4130e6a4a2"></a><!-- doxytag: member="COUNT_A" ref="ggac38d64c8b27b652413a664cddd4d40abaac7947d53eb3acf81251ee4130e6a4a2" args="" -->COUNT_A</em> </td><td>
122
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abac6dbadf2ab9405daa47dc0f10d082516"></a><!-- doxytag: member="COUNT_B" ref="ggac38d64c8b27b652413a664cddd4d40abac6dbadf2ab9405daa47dc0f10d082516" args="" -->COUNT_B</em> </td><td>
129
<p>Definition at line <a class="el" href="a00089_source.html#l00055">55</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
66
133
<hr/><h2>Function Documentation</h2>
67
<a class="anchor" id="ga819bdab57a624a08456ea79161b9c5d2"></a><!-- doxytag: member="bm::combine_and" ref="ga819bdab57a624a08456ea79161b9c5d2" args="(BV &bv, It first, It last)" -->
69
<div class="memproto">
70
<div class="memtemplate">
71
template<class BV , class It > </div>
72
<table class="memname">
74
<td class="memname">void bm::combine_and </td>
76
<td class="paramtype">BV & </td>
77
<td class="paramname"> <em>bv</em>, </td>
80
<td class="paramkey"></td>
82
<td class="paramtype">It </td>
83
<td class="paramname"> <em>first</em>, </td>
86
<td class="paramkey"></td>
88
<td class="paramtype">It </td>
89
<td class="paramname"> <em>last</em></td><td> </td>
94
<td></td><td></td><td><code> [inline]</code></td>
100
<p>AND Combine bitvector and the iterable sequence. </p>
101
<p>Algorithm combines <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.</p>
102
<dl><dt><b>Parameters:</b></dt><dd>
103
<table border="0" cellspacing="2" cellpadding="0">
104
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
105
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
106
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence</td></tr>
110
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00125.html#ga22922f71bd1eec8a5b663dc77b90cf6c" title="AND Combine bitvector and the iterable sequence.">combine_and_sorted</a> </dd></dl>
112
<p>Definition at line <a class="el" href="a00090_source.html#l01382">1382</a> of file <a class="el" href="a00090_source.html">bmalgo_impl.h</a>.</p>
114
<p>References <a class="el" href="a00090_source.html#l01105">bm::combine_or()</a>.</p>
118
<a class="anchor" id="ga22922f71bd1eec8a5b663dc77b90cf6c"></a><!-- doxytag: member="bm::combine_and_sorted" ref="ga22922f71bd1eec8a5b663dc77b90cf6c" args="(BV &bv, It first, It last)" -->
119
<div class="memitem">
120
<div class="memproto">
121
<div class="memtemplate">
122
template<class BV , class It > </div>
123
<table class="memname">
125
<td class="memname">void bm::combine_and_sorted </td>
127
<td class="paramtype">BV & </td>
128
<td class="paramname"> <em>bv</em>, </td>
131
<td class="paramkey"></td>
133
<td class="paramtype">It </td>
134
<td class="paramname"> <em>first</em>, </td>
137
<td class="paramkey"></td>
139
<td class="paramtype">It </td>
140
<td class="paramname"> <em>last</em></td><td> </td>
145
<td></td><td></td><td><code> [inline]</code></td>
151
<p>AND Combine bitvector and the iterable sequence. </p>
152
<p>Algorithm combines <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a> with sorted sequence of integers (represents another set).</p>
153
<dl><dt><b>Parameters:</b></dt><dd>
154
<table border="0" cellspacing="2" cellpadding="0">
155
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
156
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
157
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence </td></tr>
162
<p>Definition at line <a class="el" href="a00090_source.html#l01350">1350</a> of file <a class="el" href="a00090_source.html">bmalgo_impl.h</a>.</p>
164
<p>References <a class="el" href="a00093_source.html#l00050">BM_ASSERT</a>.</p>
168
<a class="anchor" id="ga54ff78528c99ae3ca443eb99ba44785b"></a><!-- doxytag: member="bm::combine_or" ref="ga54ff78528c99ae3ca443eb99ba44785b" args="(BV &bv, It first, It last)" -->
169
<div class="memitem">
170
<div class="memproto">
171
<div class="memtemplate">
172
template<class BV , class It > </div>
173
<table class="memname">
175
<td class="memname">void bm::combine_or </td>
177
<td class="paramtype">BV & </td>
178
<td class="paramname"> <em>bv</em>, </td>
181
<td class="paramkey"></td>
183
<td class="paramtype">It </td>
184
<td class="paramname"> <em>first</em>, </td>
187
<td class="paramkey"></td>
189
<td class="paramtype">It </td>
190
<td class="paramname"> <em>last</em></td><td> </td>
195
<td></td><td></td><td><code> [inline]</code></td>
201
<p>OR Combine bitvector and the iterable sequence. </p>
202
<p>Algorithm combines <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.</p>
203
<dl><dt><b>Parameters:</b></dt><dd>
204
<table border="0" cellspacing="2" cellpadding="0">
205
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
206
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
207
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence </td></tr>
212
<p>Definition at line <a class="el" href="a00090_source.html#l01105">1105</a> of file <a class="el" href="a00090_source.html">bmalgo_impl.h</a>.</p>
214
<p>References <a class="el" href="a00090_source.html#l01075">bm::block_range_scan()</a>, <a class="el" href="a00093_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00093_source.html#l00095">BMGAP_PTR</a>, <a class="el" href="a00094_source.html#l02362">bm::gap_limit()</a>, <a class="el" href="a00094_source.html#l01133">bm::gap_set_value()</a>, <a class="el" href="a00092_source.html#l00048">bm::id_max</a>, <a class="el" href="a00092_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00092_source.html#l00053">bm::set_block_shift</a>, <a class="el" href="a00092_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00092_source.html#l00062">bm::set_word_shift</a>.</p>
216
<p>Referenced by <a class="el" href="a00090_source.html#l01382">bm::combine_and()</a>.</p>
220
<a class="anchor" id="gab88c5bf51484323e0139aa789d7f0b98"></a><!-- doxytag: member="bm::combine_sub" ref="gab88c5bf51484323e0139aa789d7f0b98" args="(BV &bv, It first, It last)" -->
221
<div class="memitem">
222
<div class="memproto">
223
<div class="memtemplate">
224
template<class BV , class It > </div>
225
<table class="memname">
227
<td class="memname">void bm::combine_sub </td>
229
<td class="paramtype">BV & </td>
230
<td class="paramname"> <em>bv</em>, </td>
233
<td class="paramkey"></td>
235
<td class="paramtype">It </td>
236
<td class="paramname"> <em>first</em>, </td>
239
<td class="paramkey"></td>
241
<td class="paramtype">It </td>
242
<td class="paramname"> <em>last</em></td><td> </td>
247
<td></td><td></td><td><code> [inline]</code></td>
253
<p>SUB Combine bitvector and the iterable sequence. </p>
254
<p>Algorithm combines <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.</p>
255
<dl><dt><b>Parameters:</b></dt><dd>
256
<table border="0" cellspacing="2" cellpadding="0">
257
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
258
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
259
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence </td></tr>
264
<p>Definition at line <a class="el" href="a00090_source.html#l01268">1268</a> of file <a class="el" href="a00090_source.html">bmalgo_impl.h</a>.</p>
266
<p>References <a class="el" href="a00090_source.html#l01075">bm::block_range_scan()</a>, <a class="el" href="a00093_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00093_source.html#l00095">BMGAP_PTR</a>, <a class="el" href="a00094_source.html#l02362">bm::gap_limit()</a>, <a class="el" href="a00094_source.html#l01133">bm::gap_set_value()</a>, <a class="el" href="a00094_source.html#l00489">bm::gap_test()</a>, <a class="el" href="a00092_source.html#l00048">bm::id_max</a>, <a class="el" href="a00092_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00092_source.html#l00053">bm::set_block_shift</a>, <a class="el" href="a00092_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00092_source.html#l00062">bm::set_word_shift</a>.</p>
270
<a class="anchor" id="ga3cb362aee03de6a321495100ae5c8375"></a><!-- doxytag: member="bm::combine_xor" ref="ga3cb362aee03de6a321495100ae5c8375" args="(BV &bv, It first, It last)" -->
271
<div class="memitem">
272
<div class="memproto">
273
<div class="memtemplate">
274
template<class BV , class It > </div>
275
<table class="memname">
277
<td class="memname">void bm::combine_xor </td>
279
<td class="paramtype">BV & </td>
280
<td class="paramname"> <em>bv</em>, </td>
283
<td class="paramkey"></td>
285
<td class="paramtype">It </td>
286
<td class="paramname"> <em>first</em>, </td>
289
<td class="paramkey"></td>
291
<td class="paramtype">It </td>
292
<td class="paramname"> <em>last</em></td><td> </td>
297
<td></td><td></td><td><code> [inline]</code></td>
303
<p>XOR Combine bitvector and the iterable sequence. </p>
304
<p>Algorithm combines <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.</p>
305
<dl><dt><b>Parameters:</b></dt><dd>
306
<table border="0" cellspacing="2" cellpadding="0">
307
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
308
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
309
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence </td></tr>
314
<p>Definition at line <a class="el" href="a00090_source.html#l01184">1184</a> of file <a class="el" href="a00090_source.html">bmalgo_impl.h</a>.</p>
316
<p>References <a class="el" href="a00090_source.html#l01075">bm::block_range_scan()</a>, <a class="el" href="a00093_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00093_source.html#l00095">BMGAP_PTR</a>, <a class="el" href="a00094_source.html#l02362">bm::gap_limit()</a>, <a class="el" href="a00094_source.html#l01133">bm::gap_set_value()</a>, <a class="el" href="a00094_source.html#l00489">bm::gap_test()</a>, <a class="el" href="a00092_source.html#l00048">bm::id_max</a>, <a class="el" href="a00092_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00092_source.html#l00053">bm::set_block_shift</a>, <a class="el" href="a00092_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00092_source.html#l00062">bm::set_word_shift</a>.</p>
320
<a class="anchor" id="gac7a59d3bc266310ec127cb3efadb0d33"></a><!-- doxytag: member="bm::count_intervals" ref="gac7a59d3bc266310ec127cb3efadb0d33" args="(const BV &bv)" -->
321
<div class="memitem">
322
<div class="memproto">
323
<div class="memtemplate">
324
template<class BV > </div>
325
<table class="memname">
327
<td class="memname"><a class="el" href="a00116.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_intervals </td>
329
<td class="paramtype">const BV & </td>
330
<td class="paramname"> <em>bv</em></td>
134
<a class="anchor" id="ga2d5393e05bcfc540840a4cee67fb771f"></a><!-- doxytag: member="bm::any_and" ref="ga2d5393e05bcfc540840a4cee67fb771f" args="(const BV &bv1, const BV &bv2)" -->
135
<div class="memitem">
136
<div class="memproto">
137
<div class="memtemplate">
138
template<class BV > </div>
139
<table class="memname">
141
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_and </td>
143
<td class="paramtype">const BV & </td>
144
<td class="paramname"> <em>bv1</em>, </td>
147
<td class="paramkey"></td>
149
<td class="paramtype">const BV & </td>
150
<td class="paramname"> <em>bv2</em></td><td> </td>
155
<td></td><td></td><td><code> [inline]</code></td>
161
<p>Computes if there is any bit in AND operation of two bitsets. </p>
162
<dl><dt><b>Parameters:</b></dt><dd>
163
<table border="0" cellspacing="2" cellpadding="0">
164
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
165
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
169
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
171
<p>Definition at line <a class="el" href="a00089_source.html#l00995">995</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
173
<p>References <a class="el" href="a00089_source.html#l00057">bm::COUNT_AND</a>, <a class="el" href="a00089_source.html#l00853">bm::distance_operation_any()</a>, and <a class="el" href="a00089_source.html#l00088">bm::distance_metric_descriptor::result</a>.</p>
177
<a class="anchor" id="gaeda4f0cf54aa464cec09e740100caa79"></a><!-- doxytag: member="bm::any_or" ref="gaeda4f0cf54aa464cec09e740100caa79" args="(const BV &bv1, const BV &bv2)" -->
178
<div class="memitem">
179
<div class="memproto">
180
<div class="memtemplate">
181
template<class BV > </div>
182
<table class="memname">
184
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_or </td>
186
<td class="paramtype">const BV & </td>
187
<td class="paramname"> <em>bv1</em>, </td>
190
<td class="paramkey"></td>
192
<td class="paramtype">const BV & </td>
193
<td class="paramname"> <em>bv2</em></td><td> </td>
198
<td></td><td></td><td><code> [inline]</code></td>
204
<p>Computes if there is any bit in OR operation of two bitsets. </p>
205
<dl><dt><b>Parameters:</b></dt><dd>
206
<table border="0" cellspacing="2" cellpadding="0">
207
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
208
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
212
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
214
<p>Definition at line <a class="el" href="a00089_source.html#l01097">1097</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
216
<p>References <a class="el" href="a00089_source.html#l00059">bm::COUNT_OR</a>, <a class="el" href="a00089_source.html#l00853">bm::distance_operation_any()</a>, and <a class="el" href="a00089_source.html#l00088">bm::distance_metric_descriptor::result</a>.</p>
220
<a class="anchor" id="gabde2e210b9b1edd190e1f5a9ff22344c"></a><!-- doxytag: member="bm::any_sub" ref="gabde2e210b9b1edd190e1f5a9ff22344c" args="(const BV &bv1, const BV &bv2)" -->
221
<div class="memitem">
222
<div class="memproto">
223
<div class="memtemplate">
224
template<class BV > </div>
225
<table class="memname">
227
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_sub </td>
229
<td class="paramtype">const BV & </td>
230
<td class="paramname"> <em>bv1</em>, </td>
233
<td class="paramkey"></td>
235
<td class="paramtype">const BV & </td>
236
<td class="paramname"> <em>bv2</em></td><td> </td>
241
<td></td><td></td><td><code> [inline]</code></td>
247
<p>Computes if there is any bit in SUB operation of two bitsets. </p>
248
<dl><dt><b>Parameters:</b></dt><dd>
249
<table border="0" cellspacing="2" cellpadding="0">
250
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
251
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
255
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
257
<p>Definition at line <a class="el" href="a00089_source.html#l01064">1064</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
259
<p>References <a class="el" href="a00089_source.html#l00060">bm::COUNT_SUB_AB</a>, <a class="el" href="a00089_source.html#l00853">bm::distance_operation_any()</a>, and <a class="el" href="a00089_source.html#l00088">bm::distance_metric_descriptor::result</a>.</p>
263
<a class="anchor" id="ga2d63f41244b82d233acb53d88b326b82"></a><!-- doxytag: member="bm::any_xor" ref="ga2d63f41244b82d233acb53d88b326b82" args="(const BV &bv1, const BV &bv2)" -->
264
<div class="memitem">
265
<div class="memproto">
266
<div class="memtemplate">
267
template<class BV > </div>
268
<table class="memname">
270
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_xor </td>
272
<td class="paramtype">const BV & </td>
273
<td class="paramname"> <em>bv1</em>, </td>
276
<td class="paramkey"></td>
278
<td class="paramtype">const BV & </td>
279
<td class="paramname"> <em>bv2</em></td><td> </td>
284
<td></td><td></td><td><code> [inline]</code></td>
290
<p>Computes if there is any bit in XOR operation of two bitsets. </p>
291
<dl><dt><b>Parameters:</b></dt><dd>
292
<table border="0" cellspacing="2" cellpadding="0">
293
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
294
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
298
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
300
<p>Definition at line <a class="el" href="a00089_source.html#l01029">1029</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
302
<p>References <a class="el" href="a00089_source.html#l00058">bm::COUNT_XOR</a>, <a class="el" href="a00089_source.html#l00853">bm::distance_operation_any()</a>, and <a class="el" href="a00089_source.html#l00088">bm::distance_metric_descriptor::result</a>.</p>
306
<a class="anchor" id="gae451cb4b87e8c0859b0614d2ffb99737"></a><!-- doxytag: member="bm::count_and" ref="gae451cb4b87e8c0859b0614d2ffb99737" args="(const BV &bv1, const BV &bv2)" -->
307
<div class="memitem">
308
<div class="memproto">
309
<div class="memtemplate">
310
template<class BV > </div>
311
<table class="memname">
313
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_and </td>
315
<td class="paramtype">const BV & </td>
316
<td class="paramname"> <em>bv1</em>, </td>
319
<td class="paramkey"></td>
321
<td class="paramtype">const BV & </td>
322
<td class="paramname"> <em>bv2</em></td><td> </td>
327
<td></td><td></td><td><code> [inline]</code></td>
333
<p>Computes bitcount of AND operation of two bitsets. </p>
334
<dl><dt><b>Parameters:</b></dt><dd>
335
<table border="0" cellspacing="2" cellpadding="0">
336
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
337
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
341
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
342
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00008.html#a3">sample9.cpp</a>.</dd>
344
<p>Definition at line <a class="el" href="a00089_source.html#l00982">982</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
346
<p>References <a class="el" href="a00089_source.html#l00783">bm::distance_and_operation()</a>.</p>
348
<p>Referenced by <a class="el" href="a00114_source.html#l00047">main()</a>.</p>
352
<a class="anchor" id="ga803c564668703fc3bf80067570c2c905"></a><!-- doxytag: member="bm::count_or" ref="ga803c564668703fc3bf80067570c2c905" args="(const BV &bv1, const BV &bv2)" -->
353
<div class="memitem">
354
<div class="memproto">
355
<div class="memtemplate">
356
template<class BV > </div>
357
<table class="memname">
359
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_or </td>
361
<td class="paramtype">const BV & </td>
362
<td class="paramname"> <em>bv1</em>, </td>
365
<td class="paramkey"></td>
367
<td class="paramtype">const BV & </td>
368
<td class="paramname"> <em>bv2</em></td><td> </td>
373
<td></td><td></td><td><code> [inline]</code></td>
379
<p>Computes bitcount of OR operation of two bitsets. </p>
380
<dl><dt><b>Parameters:</b></dt><dd>
381
<table border="0" cellspacing="2" cellpadding="0">
382
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
383
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
387
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
389
<p>Definition at line <a class="el" href="a00089_source.html#l01081">1081</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
391
<p>References <a class="el" href="a00089_source.html#l00059">bm::COUNT_OR</a>, <a class="el" href="a00089_source.html#l00693">bm::distance_operation()</a>, and <a class="el" href="a00089_source.html#l00088">bm::distance_metric_descriptor::result</a>.</p>
395
<a class="anchor" id="ga902d8c1cd1f8a2538cd47d47f5d8d605"></a><!-- doxytag: member="bm::count_sub" ref="ga902d8c1cd1f8a2538cd47d47f5d8d605" args="(const BV &bv1, const BV &bv2)" -->
396
<div class="memitem">
397
<div class="memproto">
398
<div class="memtemplate">
399
template<class BV > </div>
400
<table class="memname">
402
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_sub </td>
404
<td class="paramtype">const BV & </td>
405
<td class="paramname"> <em>bv1</em>, </td>
408
<td class="paramkey"></td>
410
<td class="paramtype">const BV & </td>
411
<td class="paramname"> <em>bv2</em></td><td> </td>
416
<td></td><td></td><td><code> [inline]</code></td>
422
<p>Computes bitcount of SUB operation of two bitsets. </p>
423
<dl><dt><b>Parameters:</b></dt><dd>
424
<table border="0" cellspacing="2" cellpadding="0">
425
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
426
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
430
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
432
<p>Definition at line <a class="el" href="a00089_source.html#l01047">1047</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
434
<p>References <a class="el" href="a00089_source.html#l00060">bm::COUNT_SUB_AB</a>, <a class="el" href="a00089_source.html#l00693">bm::distance_operation()</a>, and <a class="el" href="a00089_source.html#l00088">bm::distance_metric_descriptor::result</a>.</p>
438
<a class="anchor" id="gafc64a082dcaee07f70f7faf3e24f844e"></a><!-- doxytag: member="bm::count_xor" ref="gafc64a082dcaee07f70f7faf3e24f844e" args="(const BV &bv1, const BV &bv2)" -->
439
<div class="memitem">
440
<div class="memproto">
441
<div class="memtemplate">
442
template<class BV > </div>
443
<table class="memname">
445
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_xor </td>
447
<td class="paramtype">const BV & </td>
448
<td class="paramname"> <em>bv1</em>, </td>
451
<td class="paramkey"></td>
453
<td class="paramtype">const BV & </td>
454
<td class="paramname"> <em>bv2</em></td><td> </td>
459
<td></td><td></td><td><code> [inline]</code></td>
465
<p>Computes bitcount of XOR operation of two bitsets. </p>
466
<dl><dt><b>Parameters:</b></dt><dd>
467
<table border="0" cellspacing="2" cellpadding="0">
468
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
469
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
473
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
474
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00008.html#a2">sample9.cpp</a>.</dd>
476
<p>Definition at line <a class="el" href="a00089_source.html#l01013">1013</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
478
<p>References <a class="el" href="a00089_source.html#l00058">bm::COUNT_XOR</a>, <a class="el" href="a00089_source.html#l00693">bm::distance_operation()</a>, and <a class="el" href="a00089_source.html#l00088">bm::distance_metric_descriptor::result</a>.</p>
480
<p>Referenced by <a class="el" href="a00114_source.html#l00047">main()</a>.</p>
484
<a class="anchor" id="gad3ce9974302b0da70c5f029f620409f4"></a><!-- doxytag: member="bm::distance_and_operation" ref="gad3ce9974302b0da70c5f029f620409f4" args="(const BV &bv1, const BV &bv2)" -->
485
<div class="memitem">
486
<div class="memproto">
487
<div class="memtemplate">
488
template<class BV > </div>
489
<table class="memname">
491
<td class="memname">unsigned bm::distance_and_operation </td>
493
<td class="paramtype">const BV & </td>
494
<td class="paramname"> <em>bv1</em>, </td>
497
<td class="paramkey"></td>
499
<td class="paramtype">const BV & </td>
500
<td class="paramname"> <em>bv2</em></td><td> </td>
505
<td></td><td></td><td><code> [inline]</code></td>
511
<p>Distance AND computing template function. </p>
512
<dl><dt><b>Parameters:</b></dt><dd>
513
<table border="0" cellspacing="2" cellpadding="0">
514
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- argument bitvector 1 (A) </td></tr>
515
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- argument bitvector 2 (B) </td></tr>
520
<p>Definition at line <a class="el" href="a00089_source.html#l00783">783</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
522
<p>References <a class="el" href="a00092_source.html#l00130">BM_SET_MMX_GUARD</a>, <a class="el" href="a00089_source.html#l00329">bm::combine_count_and_operation_with_block()</a>, <a class="el" href="a00102_source.html#l00068">bm::min_value()</a>, and <a class="el" href="a00091_source.html#l00081">bm::set_array_size</a>.</p>
524
<p>Referenced by <a class="el" href="a00089_source.html#l00982">bm::count_and()</a>.</p>
528
<a class="anchor" id="ga815fef76f02576ab9ab58de0a45d8a4b"></a><!-- doxytag: member="bm::distance_operation" ref="ga815fef76f02576ab9ab58de0a45d8a4b" args="(const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)" -->
529
<div class="memitem">
530
<div class="memproto">
531
<div class="memtemplate">
532
template<class BV > </div>
533
<table class="memname">
535
<td class="memname">void bm::distance_operation </td>
537
<td class="paramtype">const BV & </td>
538
<td class="paramname"> <em>bv1</em>, </td>
541
<td class="paramkey"></td>
543
<td class="paramtype">const BV & </td>
544
<td class="paramname"> <em>bv2</em>, </td>
547
<td class="paramkey"></td>
549
<td class="paramtype">distance_metric_descriptor * </td>
550
<td class="paramname"> <em>dmit</em>, </td>
553
<td class="paramkey"></td>
555
<td class="paramtype">distance_metric_descriptor * </td>
556
<td class="paramname"> <em>dmit_end</em></td><td> </td>
561
<td></td><td></td><td><code> [inline]</code></td>
567
<p>Distance computing template function. </p>
568
<p>Function receives two bitvectors and an array of distance metrics (metrics pipeline). Function computes all metrics saves result into corresponding pipeline results (<a class="el" href="a00060.html#a94c955fe1ac46589d6edc8df7fd35cf6">distance_metric_descriptor::result</a>) An important detail is that function reuses metric descriptors, incrementing received values. It allows you to accumulate results from different calls in the pipeline.</p>
569
<dl><dt><b>Parameters:</b></dt><dd>
570
<table border="0" cellspacing="2" cellpadding="0">
571
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- argument bitvector 1 (A) </td></tr>
572
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- argument bitvector 2 (B) </td></tr>
573
<tr><td valign="top"></td><td valign="top"><em>dmit</em> </td><td>- pointer to first element of metric descriptors array Input-Output parameter, receives metric code as input, computation is added to "result" field </td></tr>
574
<tr><td valign="top"></td><td valign="top"><em>dmit_end</em> </td><td>- pointer to (last+1) element of metric descriptors array </td></tr>
578
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00008.html#a10">sample9.cpp</a>.</dd>
580
<p>Definition at line <a class="el" href="a00089_source.html#l00693">693</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
582
<p>References <a class="el" href="a00092_source.html#l00130">BM_SET_MMX_GUARD</a>, <a class="el" href="a00089_source.html#l00116">bm::combine_count_operation_with_block()</a>, <a class="el" href="a00089_source.html#l00659">bm::distance_stage()</a>, and <a class="el" href="a00091_source.html#l00081">bm::set_array_size</a>.</p>
584
<p>Referenced by <a class="el" href="a00089_source.html#l01081">bm::count_or()</a>, <a class="el" href="a00089_source.html#l01047">bm::count_sub()</a>, <a class="el" href="a00089_source.html#l01013">bm::count_xor()</a>, and <a class="el" href="a00114_source.html#l00047">main()</a>.</p>
588
<a class="anchor" id="gaa66525fd7a3f823d73678252a235982e"></a><!-- doxytag: member="bm::distance_operation_any" ref="gaa66525fd7a3f823d73678252a235982e" args="(const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)" -->
589
<div class="memitem">
590
<div class="memproto">
591
<div class="memtemplate">
592
template<class BV > </div>
593
<table class="memname">
595
<td class="memname">void bm::distance_operation_any </td>
597
<td class="paramtype">const BV & </td>
598
<td class="paramname"> <em>bv1</em>, </td>
601
<td class="paramkey"></td>
603
<td class="paramtype">const BV & </td>
604
<td class="paramname"> <em>bv2</em>, </td>
607
<td class="paramkey"></td>
609
<td class="paramtype">distance_metric_descriptor * </td>
610
<td class="paramname"> <em>dmit</em>, </td>
613
<td class="paramkey"></td>
615
<td class="paramtype">distance_metric_descriptor * </td>
616
<td class="paramname"> <em>dmit_end</em></td><td> </td>
621
<td></td><td></td><td><code> [inline]</code></td>
627
<p>Distance screening template function. </p>
628
<p>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 (<a class="el" href="a00060.html#a94c955fe1ac46589d6edc8df7fd35cf6">distance_metric_descriptor::result</a>) An important detail is that function reuses metric descriptors, incrementing received values. It allows you to accumulate results from different calls in the pipeline.</p>
629
<dl><dt><b>Parameters:</b></dt><dd>
630
<table border="0" cellspacing="2" cellpadding="0">
631
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- argument bitvector 1 (A) </td></tr>
632
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- argument bitvector 2 (B) </td></tr>
633
<tr><td valign="top"></td><td valign="top"><em>dmit</em> </td><td>- pointer to first element of metric descriptors array Input-Output parameter, receives metric code as input, computation is added to "result" field </td></tr>
634
<tr><td valign="top"></td><td valign="top"><em>dmit_end</em> </td><td>- pointer to (last+1) element of metric descriptors array </td></tr>
639
<p>Definition at line <a class="el" href="a00089_source.html#l00853">853</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
641
<p>References <a class="el" href="a00092_source.html#l00088">BM_IS_GAP</a>, <a class="el" href="a00092_source.html#l00130">BM_SET_MMX_GUARD</a>, <a class="el" href="a00089_source.html#l00366">bm::combine_any_operation_with_block()</a>, <a class="el" href="a00089_source.html#l00659">bm::distance_stage()</a>, <a class="el" href="a00089_source.html#l00088">bm::distance_metric_descriptor::result</a>, and <a class="el" href="a00091_source.html#l00081">bm::set_array_size</a>.</p>
643
<p>Referenced by <a class="el" href="a00089_source.html#l00995">bm::any_and()</a>, <a class="el" href="a00089_source.html#l01097">bm::any_or()</a>, <a class="el" href="a00089_source.html#l01064">bm::any_sub()</a>, and <a class="el" href="a00089_source.html#l01029">bm::any_xor()</a>.</p>
647
<a class="anchor" id="ga158946ea41ca66c3e1bca62c92684788"></a><!-- doxytag: member="bm::operation2metric" ref="ga158946ea41ca66c3e1bca62c92684788" args="(set_operation op)" -->
648
<div class="memitem">
649
<div class="memproto">
650
<table class="memname">
652
<td class="memname">distance_metric bm::operation2metric </td>
654
<td class="paramtype">set_operation </td>
655
<td class="paramname"> <em>op</em></td>
331
656
<td> ) </td>
332
657
<td><code> [inline]</code></td>