diff options
author | Ulrich Bauer <mail@ulrich-bauer.org> | 2016-09-16 16:01:57 +0200 |
---|---|---|
committer | Ulrich Bauer <mail@ulrich-bauer.org> | 2016-09-16 16:24:11 +0200 |
commit | 5b29a041208520afcd97d513f9528db6e1633409 (patch) | |
tree | f6175ae18c33c3d43fce14b2720233b7c876448d | |
parent | 1ae58195ed01700ebe1cb0ece116be3c27a59faa (diff) |
clarified coboundary enumeration code
-rw-r--r-- | ripser.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -240,17 +240,18 @@ public: class simplex_coboundary_enumerator { private: - index_t idx, modified_idx, v, k; + index_t idx_below, idx_above, v, k; const binomial_coeff_table& binomial_coeff; public: simplex_coboundary_enumerator(index_t _idx, index_t _dim, index_t _n, const binomial_coeff_table& _binomial_coeff) - : idx(_idx), modified_idx(_idx), v(_n - 1), k(_dim + 1), binomial_coeff(_binomial_coeff) {} + : idx_below(_idx), idx_above(0), v(_n - 1), k(_dim + 1), binomial_coeff(_binomial_coeff) {} bool has_next() { - while ((v != -1) && (binomial_coeff(v, k) <= idx)) { - idx -= binomial_coeff(v, k); - modified_idx += binomial_coeff(v, k + 1) - binomial_coeff(v, k); + while ((v != -1) && (binomial_coeff(v, k) <= idx_below)) { + idx_below -= binomial_coeff(v, k); + idx_above += binomial_coeff(v, k + 1); + --v; --k; assert(k != -1); @@ -259,7 +260,7 @@ public: } std::pair<entry_t, index_t> next() { - auto result = std::make_pair(make_entry(modified_idx + binomial_coeff(v, k + 1), k & 1 ? -1 : 1), v); + auto result = std::make_pair(make_entry(idx_above + binomial_coeff(v, k + 1) + idx_below, k & 1 ? -1 : 1), v); --v; return result; } |