summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Bauer <ulrich.bauer@tum.de>2016-03-29 23:40:45 +0200
committerUlrich Bauer <ulrich.bauer@tum.de>2016-03-29 23:40:45 +0200
commit10eb8efc25268b70863906cf050af3caac2cf259 (patch)
treecbaf762bd9ce78cedb997af61fecd108978f448d
parentc8b5fb74e4d6d5c0b6ae334a52c3bf97d5f0018d (diff)
cleanup coboundary enumerator
-rw-r--r--ripser.cpp31
1 files changed, 12 insertions, 19 deletions
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<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;
}
};