     if (!verify())
         {
         printf("Invalid results in host bmark!\n");
-        return;
+        return 0.0f;
         }
         
     // benchmarks

            }
        }
    
    printf("Device<%1d,%1d>          : ", transpose_idxlist_coord, transpose_bin_adj);
    printf("%f ms, %d blk\n", min_t, fastest_block_size);
    return min_t;
    }


    std::cout << "];" << std::endl;
    }

void bmark_N()
    {
    g_rcut = 3.1f;
    float phi = 0.20f;

    std::vector<unsigned int> N_list;
    for (unsigned int power = 2; power < 6 ; power++)
        {
        N_list.push_back(1*pow(10.0f,float(power)));
        N_list.push_back(2*pow(10.0f,float(power)));
        N_list.push_back(3*pow(10.0f,float(power)));
        N_list.push_back(4*pow(10.0f,float(power)));
        N_list.push_back(5*pow(10.0f,float(power)));
        N_list.push_back(6*pow(10.0f,float(power)));
        N_list.push_back(7*pow(10.0f,float(power)));
        N_list.push_back(8*pow(10.0f,float(power)));
        N_list.push_back(9*pow(10.0f,float(power)));
        }


    std::cout << "N = [";
    for (unsigned int i = 0; i < N_list.size(); i++)
        std::cout << N_list[i] << " ";
    std::cout << "];" << std::endl;

    std::cout << "btim = [";
    for (unsigned int i = 0; i < N_list.size(); i++)
        {
        g_N = N_list[i];
        float L = pow(float(M_PI/6.0)*float(g_N) / phi, 1.0f/3.0f);
        g_Lx = g_Ly = g_Lz = L;

        // setup
        allocate_data();
        initialize_data();
        sort_data();
        sort_bin_adj();

        // normally, data in HOOMD is not perfectly sorted:
        for (unsigned int k = 0; k < 100; k++)
            tweak_data();

        //float time = bmark_device_nlist<false, false>(true);
        float time = bmark_host_nlist<false, false>(true);
        
        std::cout << time << " ";

        free_data();
        }
    std::cout << "];" << std::endl;
    }

int main(int argc, char **argv)
    {
//    bmark_line();
    bmark_N();

#if 0
    float phi;
    if (argc == 1)
        {
