#include <iostream>
#include "bm.h"
#include "bmalgo.h"
#include "bmundef.h"
using namespace std;
int main(void)
{
try
{
bm::bvector<> bv1;
bm::bvector<> bv2;
bv1[10] = true;
bv1[100] = true;
bv1[10000] = true;
bv2[10] = true;
bv2[100] = true;
bv2[20000] = true;
bv2[30000] = true;
auto hamming = bm::count_xor(bv1, bv2);
cout << "Hamming distance = " << hamming << endl;
double dice =
double(2 * bm::count_and(bv1, bv2))/double(bv1.count() + bv2.count());
cout << "Dice distance = " << dice << endl;
bm::distance_metric_descriptor dmd[3];
dmd[0].metric = bm::COUNT_AND;
dmd[1].metric = bm::COUNT_A;
dmd[2].metric = bm::COUNT_B;
bm::distance_operation(bv1, bv2, dmd, dmd+3);
double dice_p =
double(2 * dmd[0].result) / double(dmd[1].result + dmd[2].result);
cout << "Dice distance (pipeline) = " << dice_p << endl;
}
catch(std::exception& ex)
{
std::cerr << ex.what() << std::endl;
return 1;
}
return 0;
}