summaryrefslogtreecommitdiff
path: root/src/Bottleneck_distance/include
diff options
context:
space:
mode:
authorfgodi <fgodi@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2016-11-23 16:57:49 +0000
committerfgodi <fgodi@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2016-11-23 16:57:49 +0000
commit5bd04a9433462965aecf000e5044e70405e968ff (patch)
treea507b919414a0cbfec3719a05cb54e8a4473e2c5 /src/Bottleneck_distance/include
parent33ce062bf29b9bb7db9e83cde39cab6411d613dc (diff)
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
Diffstat (limited to 'src/Bottleneck_distance/include')
-rw-r--r--src/Bottleneck_distance/include/gudhi/Bottleneck.h20
-rw-r--r--src/Bottleneck_distance/include/gudhi/Persistence_diagrams_graph.h4
2 files changed, 9 insertions, 15 deletions
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<typename Persistence_diagram1, typename Persistence_diagram2>
-double compute(const Persistence_diagram1& diag1, const Persistence_diagram2& diag2, double e = 0.);
-
-template<typename Persistence_diagram1, typename Persistence_diagram2>
-double compute_exactly(const Persistence_diagram1& diag1, const Persistence_diagram2& diag2);
-
template<typename Persistence_diagram1, typename Persistence_diagram2>
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<typename Persistence_diagram1, typename Persistence_diagram2>
-double compute(const Persistence_diagram1 &diag1, const Persistence_diagram2 &diag2, double e) {
- if(e< std::numeric_limits<double>::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);
}