     typedef uint64 argument_type;
     typedef uint8  return_type;
 
-    bloom_filter_lookup(const uint64 _size, const uint32* _words) : filter( FILTER_K, _size * 32, (const uint4*)_words ) {}
+    bloom_filter_lookup(const uint64 _size, const uint32* _words) : filter( FILTER_K, _size, (const uint4*)_words ) {}
 
     NVBIO_FORCEINLINE NVBIO_HOST_DEVICE
     uint8 operator() (const uint64 i) const

    typedef uint64 argument_type;
    typedef uint8  return_type;

    bloom_filter_inserter(const uint64 _size, uint32* _words) : filter( FILTER_K, _size * 32, (uint64_2*)_words ) {}

    NVBIO_FORCEINLINE NVBIO_HOST_DEVICE
    void operator() (const uint64 i)


int bloom_filter_test(int argc, char* argv[])
{
    uint64 size = 4*1024*1024; // 4MB
    uint32 N    = 100000;

    for (int i = 0; i < argc; ++i)
    {
        if (strcmp( argv[i], "-size" ) == 0)
            size = uint64( atoi( argv[++i] ) ) * uint64( 8*1024u*1024u );
        else if (strcmp( argv[i], "-queries" ) == 0)
            N = atoi( argv[++i] )*1000;
    }

    try
    {
        log_info(stderr, "bloom filter test... started (%.1f MB)\n", float(size) / float(8*1024*1024));

        // set the number of OpenMP threads
        omp_set_num_threads( omp_get_num_procs() );
