#include #include #include #include #include #include #include #include #include using namespace fc; int main( int argc, char** argv ) { try { bloom_parameters parameters; // How many elements roughly do we expect to insert? parameters.projected_element_count = 100000; // Maximum tolerable false positive probability? (0,1) parameters.false_positive_probability = 0.0001; // 1 in 10000 // Simple randomizer (optional) parameters.random_seed = 0xA5A5A5A5; if (!parameters) { std::cout << "Error - Invalid set of bloom filter parameters!" << std::endl; return 1; } parameters.compute_optimal_parameters(); //Instantiate Bloom Filter bloom_filter filter(parameters); if( argc > 1 ) { uint32_t count = 0; std::string line; std::ifstream in(argv[1]); std::ofstream words("words.txt"); while( !in.eof() && count < 100000 ) { std::getline(in, line); std::cout << "'"< -100; --i) { if (filter.contains(i)) { std::cout << "BF falsely contains: " << i << std::endl; } } } wdump((filter)); auto packed_filter = fc::raw::pack(filter); wdump((packed_filter.size())); wdump((packed_filter)); return 0; } catch ( const fc::exception& e ) { edump((e.to_detail_string()) ); } }