summaryrefslogtreecommitdiff
path: root/ripser.cpp
diff options
context:
space:
mode:
authorUlrich Bauer <mail@ulrich-bauer.org>2018-07-12 22:04:34 +0200
committerUlrich Bauer <mail@ulrich-bauer.org>2018-07-12 22:04:34 +0200
commit5a3afe81d365917ec64d2af7bf43d28df4b3b55c (patch)
treeed6a089e66f818aefaa2073d73962ccb32f8e364 /ripser.cpp
parent27934c38ac8cc367bf62a72e287bc55b2eb96e1e (diff)
only compute enclosing radius when thresholding
Diffstat (limited to 'ripser.cpp')
-rw-r--r--ripser.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/ripser.cpp b/ripser.cpp
index d534f49..f012591 100644
--- a/ripser.cpp
+++ b/ripser.cpp
@@ -1157,14 +1157,16 @@ int main(int argc, char** argv) {
max = -std::numeric_limits<value_t>::infinity(), max_finite = max;
int num_edges = 0;
- value_t enclosing_radius = std::numeric_limits<value_t>::infinity();
- for (index_t i = 0; i < dist.size(); ++i) {
- value_t r_i = -std::numeric_limits<value_t>::infinity();
- for (index_t j = 0; j < dist.size(); ++j) r_i = std::max(r_i, dist(i, j));
- enclosing_radius = std::min(enclosing_radius, r_i);
- }
+ if (threshold == std::numeric_limits<value_t>::max()) {
+ value_t enclosing_radius = std::numeric_limits<value_t>::infinity();
+ for (index_t i = 0; i < dist.size(); ++i) {
+ value_t r_i = -std::numeric_limits<value_t>::infinity();
+ for (index_t j = 0; j < dist.size(); ++j) r_i = std::max(r_i, dist(i, j));
+ enclosing_radius = std::min(enclosing_radius, r_i);
+ }
- if (threshold == std::numeric_limits<value_t>::max()) threshold = enclosing_radius;
+ threshold = enclosing_radius;
+ }
for (auto d : dist.distances) {
min = std::min(min, d);
@@ -1182,7 +1184,7 @@ int main(int argc, char** argv) {
.compute_barcodes();
} else {
std::cout << "sparse distance matrix with " << dist.size() << " points and " << num_edges
- << " entries" << std::endl;
+ << "/" << (dist.size()*dist.size()-1)/2 << " entries" << std::endl;
ripser<sparse_distance_matrix>(sparse_distance_matrix(std::move(dist), threshold), dim_max,
threshold, ratio, modulus)