Beispiel #1
0
void test_temp(int len) {
	const std::vector<bool>& vec = bits_imbal(len);
	BitArray v;
	v = BitArrayBuilder::create(vec.size());
	v.fillzero();
	for (unsigned int i = 0; i < vec.size(); i++) {
		v.setbit(i, vec[i]);
	}
	Rank6p t;
	//Rank6pBuilder bd;
	Rank6pBuilder::build(v, &t);
	Rank6pHintSel rhs;
	rhs.init(v);

	unsigned int onecnt = 0;
	for (unsigned int i = 0; i < vec.size(); ++i)
		if (vec[i]) onecnt++;
	int last = -1;
	for (unsigned int i = 0; i < onecnt; ++i) {
		int pos = rhs.select(i);
		//int pos2 = t.select(i);
		if (pos >= vec.size() || !vec[pos] || pos <= last) {
			cout << "select " << i << "  " << rhs.select(i) << endl;
			if (i > 0) rhs.select(i-1);
			ASSERT(vec[pos] == true);
		}
		ASSERT(pos > last);
		last = pos;
	}
}
Beispiel #2
0
BitArray find_pioneers(const BitArrayInterface* bp, size_t blksize) {
	std::vector<uint64_t> v = find_pioneers_v(bp, blksize);
	BitArray ret = BitArrayBuilder::create(bp->length());
	ret.fillzero();
	for (int i = 0; i < v.size(); i++)
		ret.setbit(v[i], true);
	return ret;
}