diff options
author | Ulrich Bauer <ulrich.bauer@tum.de> | 2016-03-29 23:40:45 +0200 |
---|---|---|
committer | Ulrich Bauer <ulrich.bauer@tum.de> | 2016-03-29 23:40:45 +0200 |
commit | 10eb8efc25268b70863906cf050af3caac2cf259 (patch) | |
tree | cbaf762bd9ce78cedb997af61fecd108978f448d | |
parent | c8b5fb74e4d6d5c0b6ae334a52c3bf97d5f0018d (diff) |
cleanup coboundary enumerator
-rw-r--r-- | ripser.cpp | 31 |
1 files changed, 12 insertions, 19 deletions
@@ -317,7 +317,7 @@ public: class simplex_coboundary_enumerator { private: - index_t idx, modified_idx, dim, n, k; + index_t idx, modified_idx, dim, v, k; const binomial_coeff_table& binomial_coeff; @@ -325,38 +325,31 @@ public: inline simplex_coboundary_enumerator ( index_t _idx, index_t _dim, index_t _n, const binomial_coeff_table& _binomial_coeff): - idx(_idx), modified_idx(_idx), dim(_dim), k(dim + 1), n(_n - 1), binomial_coeff(_binomial_coeff) {} + idx(_idx), modified_idx(_idx), dim(_dim), k(dim + 1), v(_n - 1), binomial_coeff(_binomial_coeff) {} inline bool has_next() { - while ( (k != -1 && n != -1) && (binomial_coeff( n , k ) <= idx) ) { - idx -= binomial_coeff( n , k ); + while ( (v != -1) && (binomial_coeff( v , k ) <= idx) ) { + idx -= binomial_coeff( v , k ); - modified_idx -= binomial_coeff( n , k ); - modified_idx += binomial_coeff( n , k + 1 ); + modified_idx -= binomial_coeff( v , k ); + modified_idx += binomial_coeff( v , k + 1 ); - --n; + --v; --k; + assert (k != -1); } - return k != -1 && n != -1; + return v != -1; } inline std::pair<entry_t, index_t> next() { - while ( binomial_coeff( n , k ) <= idx ) { - idx -= binomial_coeff( n , k ); - - modified_idx -= binomial_coeff( n , k ); - modified_idx += binomial_coeff( n , k + 1 ); - - --n; - } auto result = std::make_pair(make_entry( - modified_idx + binomial_coeff( n , k + 1 ), + modified_idx + binomial_coeff( v , k + 1 ), k & 1 ? -1 : 1), - n); + v); - --n; + --v; return result; } }; |