From 1e5d0ca3f84f1e5c132014d3cfc96bfe0aa3d7ee Mon Sep 17 00:00:00 2001 From: Marc Glisse Date: Sat, 9 Nov 2019 21:41:06 +0100 Subject: Empty complexes have 0 (not -1) Betti numbers --- src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/Persistent_cohomology/include/gudhi') diff --git a/src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h b/src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h index 944b6d35..0f1876d0 100644 --- a/src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h +++ b/src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h @@ -600,8 +600,10 @@ class Persistent_cohomology { * @return A vector of Betti numbers. */ std::vector betti_numbers() const { + // Don't allocate a vector of negative size for an empty complex + int siz = std::max(dim_max_, 0); // Init Betti numbers vector with zeros until Simplicial complex dimension - std::vector betti_numbers(dim_max_, 0); + std::vector betti_numbers(siz); for (auto pair : persistent_pairs_) { // Count never ended persistence intervals @@ -639,8 +641,10 @@ class Persistent_cohomology { * @return A vector of persistent Betti numbers. */ std::vector persistent_betti_numbers(Filtration_value from, Filtration_value to) const { + // Don't allocate a vector of negative size for an empty complex + int siz = std::max(dim_max_, 0); // Init Betti numbers vector with zeros until Simplicial complex dimension - std::vector betti_numbers(dim_max_, 0); + std::vector betti_numbers(siz); for (auto pair : persistent_pairs_) { // Count persistence intervals that covers the given interval // null_simplex test : if the function is called with to=+infinity, we still get something useful. And it will -- cgit v1.2.3