summaryrefslogtreecommitdiff
path: root/ripser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ripser.cpp')
-rw-r--r--ripser.cpp36
1 files changed, 14 insertions, 22 deletions
diff --git a/ripser.cpp b/ripser.cpp
index 964210a..87599af 100644
--- a/ripser.cpp
+++ b/ripser.cpp
@@ -246,16 +246,8 @@ public:
assert(a < binomial_coeff(dist.size(), dim + 1));
assert(b < binomial_coeff(dist.size(), dim + 1));
- value_t a_diam = 0, b_diam = diameter(b);
-
- get_simplex_vertices(a, dim, dist.size(), binomial_coeff, vertices.begin());
- for (index_t i = 0; i <= dim; ++i)
- for (index_t j = i + 1; j <= dim; ++j) {
- a_diam = std::max(a_diam, dist(vertices[i], vertices[j]));
- if (a_diam > b_diam) return true;
- }
-
- return (a_diam == b_diam) && (a < b);
+ return greater_diameter_or_smaller_index<diameter_index_t>()(
+ diameter_index_t(diameter(a), a), diameter_index_t(diameter(b), b));
}
template <typename Entry> bool operator()(const Entry& a, const Entry& b) const {
@@ -779,19 +771,19 @@ int main(int argc, char** argv) {
if (!point.empty()) points.push_back(point);
}
- euclidean_distance_matrix eucl_dist(std::move(points));
-
- index_t n = eucl_dist.size();
+ euclidean_distance_matrix eucl_dist(std::move(points));
+
+ index_t n = eucl_dist.size();
std::cout << "point cloud with " << n << " points" << std::endl;
- std::vector<value_t> distances;
-
- for (int i = 0; i < n; ++i)
- for (int j = 0; j < i; ++j)
- if (i > j) distances.push_back(eucl_dist(i,j));
-
- compressed_lower_distance_matrix dist(std::move(distances));
+ std::vector<value_t> distances;
+
+ for (int i = 0; i < n; ++i)
+ for (int j = 0; j < i; ++j)
+ if (i > j) distances.push_back(eucl_dist(i, j));
+
+ compressed_lower_distance_matrix dist(std::move(distances));
std::cout << "distance matrix with " << n << " points" << std::endl;
@@ -799,13 +791,13 @@ int main(int argc, char** argv) {
#ifdef FILE_FORMAT_DISTANCE_MATRIX
- std::vector<value_t> distances;
+ std::vector<value_t> distances;
std::string line;
value_t value;
for (int i = 0; std::getline(input_stream, line); ++i) {
std::istringstream s(line);
- for (int j = 0; j < i && s >> value; ++j) distances.push_back(value);
+ for (int j = 0; j < i && s >> value; ++j) distances.push_back(value);
}
compressed_lower_distance_matrix dist(std::move(distances));