summaryrefslogtreecommitdiff
path: root/src/Bottleneck_distance/include
diff options
context:
space:
mode:
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);
}