From 7567f77828ff9661f85eabe3b4cfb1876b307d42 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 19 Aug 2018 17:59:20 +0200 Subject: Remove old macros --- chilbert/Hilbert.ipp | 10 +++++----- chilbert/SmallBitVec.hpp | 19 +++---------------- 2 files changed, 8 insertions(+), 21 deletions(-) (limited to 'chilbert') diff --git a/chilbert/Hilbert.ipp b/chilbert/Hilbert.ipp index 571166d..837375e 100644 --- a/chilbert/Hilbert.ipp +++ b/chilbert/Hilbert.ipp @@ -323,7 +323,7 @@ coords_to_compact_index(const P* const p, // speed by a bit (4% when n=4, m=20) size_t* const ds = new size_t[m]; - if (mn > FBV_BITS) { + if (mn > SmallBitVec::bits_per_rack) { DynamicBitVec h(mn); detail::coords_to_index( p, m, n, h, std::move(scratch), ds); @@ -421,7 +421,7 @@ coords_to_index(const P* const p, const size_t m, const size_t n, H& h) assert(detail::num_bits(h) >= n * m); assert(detail::num_bits(p[0]) >= m); - if (n <= FBV_BITS) { + if (n <= SmallBitVec::bits_per_rack) { // Intermediate variables will fit in fixed width detail::coords_to_index(p, m, n, h, SmallBitVec(n)); } else { @@ -440,7 +440,7 @@ index_to_coords(P* const p, const size_t m, const size_t n, const H& h) assert(detail::num_bits(h) >= n * m); assert(detail::num_bits(p[0]) >= m); - if (n <= FBV_BITS) { + if (n <= SmallBitVec::bits_per_rack) { // Intermediate variables will fit in fixed width detail::index_to_coords(p, m, n, h, SmallBitVec(n)); } else { @@ -461,7 +461,7 @@ coords_to_compact_index(const P* const p, { assert(hc.size() >= std::accumulate(ms, ms + n, size_t(0))); - if (n <= FBV_BITS) { + if (n <= SmallBitVec::bits_per_rack) { // Intermediate variables will fit in fixed width detail::coords_to_compact_index( p, ms, n, hc, SmallBitVec(n), M, m); @@ -483,7 +483,7 @@ compact_index_to_coords(P* const p, { assert(hc.size() >= std::accumulate(ms, ms + n, size_t(0))); - if (n <= FBV_BITS) { + if (n <= SmallBitVec::bits_per_rack) { // Intermediate variables will fit in fixed width SmallBitVec scratch(n); detail::compact_index_to_coords( diff --git a/chilbert/SmallBitVec.hpp b/chilbert/SmallBitVec.hpp index 96652e9..308d943 100644 --- a/chilbert/SmallBitVec.hpp +++ b/chilbert/SmallBitVec.hpp @@ -29,17 +29,6 @@ namespace chilbert { -/* This must be an unsigned integer that is either 32 or 64 bits. Otherwise, - there are places in the code that simply will not work. For speed, this - should be the native word size. */ -typedef uint64_t FBV_UINT; - -#define FBV_BITS 64 - -#define FBV1 (FBV_UINT{1}) -#define FBV1S (~FBV_UINT{0}) -#define FBVN1S(n) (n == FBV_BITS ? FBV1S : (FBV1 << n) - 1) - /** A bit vector small enough to fit in a single word. */ class SmallBitVec { @@ -100,7 +89,7 @@ public: /// Set all bits to one SmallBitVec& set() { - m_rack = FBV1S & FBVN1S(size()); + m_rack = ~Rack{0} >> (bits_per_rack - m_size); return *this; } @@ -221,9 +210,8 @@ public: { if (bits > 0 && bits < size()) { assert(bits <= bits_per_rack); - m_rack &= FBVN1S(size()); m_rack = (m_rack >> bits) | (m_rack << (size() - bits)); - m_rack &= FBVN1S(size()); + m_rack &= (~Rack{0} >> (bits_per_rack - size())); } return *this; } @@ -233,9 +221,8 @@ public: { if (bits > 0 && bits < size()) { assert(bits <= bits_per_rack); - m_rack &= FBVN1S(size()); m_rack = (m_rack << bits) | (m_rack >> (size() - bits)); - m_rack &= FBVN1S(size()); + m_rack &= (~Rack{0} >> (bits_per_rack - size())); } return *this; } -- cgit v1.2.1