From 5bd04a9433462965aecf000e5044e70405e968ff Mon Sep 17 00:00:00 2001 From: fgodi Date: Wed, 23 Nov 2016 16:57:49 +0000 Subject: fix git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/bottleneck_integration@1780 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: 9001cd1b33dfea3b34e5d12ef8e20b5624a50ba9 --- src/Bottleneck_distance/include/gudhi/Bottleneck.h | 20 +++++++------------- .../include/gudhi/Persistence_diagrams_graph.h | 4 ++-- 2 files changed, 9 insertions(+), 15 deletions(-) (limited to 'src/Bottleneck_distance/include') diff --git a/src/Bottleneck_distance/include/gudhi/Bottleneck.h b/src/Bottleneck_distance/include/gudhi/Bottleneck.h index 1ae7788c..71845e25 100644 --- a/src/Bottleneck_distance/include/gudhi/Bottleneck.h +++ b/src/Bottleneck_distance/include/gudhi/Bottleneck.h @@ -29,17 +29,6 @@ namespace Gudhi { namespace bottleneck_distance { -/** \brief Function to use in order to compute the Bottleneck distance between two persistence diagrams. You get an additive e-approximation. - * - * - * \ingroup bottleneck_distance - */ -template -double compute(const Persistence_diagram1& diag1, const Persistence_diagram2& diag2, double e = 0.); - -template -double compute_exactly(const Persistence_diagram1& diag1, const Persistence_diagram2& diag2); - template double compute_exactly(const Persistence_diagram1 &diag1, const Persistence_diagram2 &diag2) { G::initialize(diag1, diag2, 0.); @@ -66,9 +55,14 @@ double compute_exactly(const Persistence_diagram1 &diag1, const Persistence_diag return sd.at(idmin); } +/** \brief Function to use in order to compute the Bottleneck distance between two persistence diagrams. + * If the last parameter e is not 0 (default value if not explicited), you get an additive e-approximation. + * + * \ingroup bottleneck_distance + */ template -double compute(const Persistence_diagram1 &diag1, const Persistence_diagram2 &diag2, double e) { - if(e< std::numeric_limits::min()) +double compute(const Persistence_diagram1 &diag1, const Persistence_diagram2 &diag2, double e=0.) { + if(e == 0.) return compute_exactly(diag1, diag2); G::initialize(diag1, diag2, e); int in = G::diameter()/e; diff --git a/src/Bottleneck_distance/include/gudhi/Persistence_diagrams_graph.h b/src/Bottleneck_distance/include/gudhi/Persistence_diagrams_graph.h index 7af149e4..7d37b9e0 100644 --- a/src/Bottleneck_distance/include/gudhi/Persistence_diagrams_graph.h +++ b/src/Bottleneck_distance/include/gudhi/Persistence_diagrams_graph.h @@ -83,10 +83,10 @@ inline void G::initialize(const Persistence_diagram1 &diag1, v.clear(); for (auto it = diag1.cbegin(); it != diag1.cend(); ++it) if (it->second - it->first > e) - u.push_back(Internal_point(it->first, it->second, u.size())); + u.push_back(Internal_point(std::get<0>(*it), std::get<1>(*it), u.size())); for (auto it = diag2.cbegin(); it != diag2.cend(); ++it) if (it->second - it->first > e) - v.push_back(Internal_point(it->first, it->second, v.size())); + v.push_back(Internal_point(std::get<0>(*it), std::get<1>(*it), v.size())); if (u.size() < v.size()) swap(u, v); } -- cgit v1.2.3