diff options
author | Ulrich Bauer <mail@ulrich-bauer.org> | 2018-07-12 22:04:34 +0200 |
---|---|---|
committer | Ulrich Bauer <mail@ulrich-bauer.org> | 2018-07-12 22:04:34 +0200 |
commit | 5a3afe81d365917ec64d2af7bf43d28df4b3b55c (patch) | |
tree | ed6a089e66f818aefaa2073d73962ccb32f8e364 /ripser.cpp | |
parent | 27934c38ac8cc367bf62a72e287bc55b2eb96e1e (diff) |
only compute enclosing radius when thresholding
Diffstat (limited to 'ripser.cpp')
-rw-r--r-- | ripser.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -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) |