From 10eb8efc25268b70863906cf050af3caac2cf259 Mon Sep 17 00:00:00 2001 From: Ulrich Bauer Date: Tue, 29 Mar 2016 23:40:45 +0200 Subject: cleanup coboundary enumerator --- ripser.cpp | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) (limited to 'ripser.cpp') diff --git a/ripser.cpp b/ripser.cpp index d679652..0edf97f 100644 --- a/ripser.cpp +++ b/ripser.cpp @@ -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 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; } }; -- cgit v1.2.3