diff options
-rw-r--r-- | src/Bottleneck_distance/include/gudhi/Bottleneck.h | 10 | ||||
-rw-r--r-- | src/Bottleneck_distance/test/bottleneck_chrono.cpp | 2 |
2 files changed, 4 insertions, 8 deletions
diff --git a/src/Bottleneck_distance/include/gudhi/Bottleneck.h b/src/Bottleneck_distance/include/gudhi/Bottleneck.h index d7e11a05..42a0d444 100644 --- a/src/Bottleneck_distance/include/gudhi/Bottleneck.h +++ b/src/Bottleneck_distance/include/gudhi/Bottleneck.h @@ -34,16 +34,12 @@ double bottleneck_distance_approx(Persistence_graph& g, double e) { double b_lower_bound = 0.; double b_upper_bound = g.diameter_bound(); const double alpha = std::pow(g.size(), 1./5.); - if(e < std::numeric_limits<double>::epsilon() * alpha){ - e = std::numeric_limits<double>::epsilon() * alpha; -#ifdef DEBUG_TRACES - std::cout << "Epsilon user given value is less than eps_min. Forced to eps_min by the application" << std::endl; -#endif // DEBUG_TRACES - } Graph_matching m(g); Graph_matching biggest_unperfect(g); while (b_upper_bound - b_lower_bound > 2*e) { double step = b_lower_bound + (b_upper_bound - b_lower_bound)/alpha; + if(step <= b_lower_bound || step >= b_upper_bound) //Avoid precision problem + break; m.set_r(step); while (m.multi_augment()); //compute a maximum matching (in the graph corresponding to the current r) if (m.perfect()) { @@ -86,7 +82,7 @@ double bottleneck_distance_exact(Persistence_graph& g) { * \ingroup bottleneck_distance */ template<typename Persistence_diagram1, typename Persistence_diagram2> -double bottleneck_distance(const Persistence_diagram1 &diag1, const Persistence_diagram2 &diag2, double e=std::numeric_limits<double>::epsilon()) { +double bottleneck_distance(const Persistence_diagram1 &diag1, const Persistence_diagram2 &diag2, double e=std::numeric_limits<double>::min()) { Persistence_graph g(diag1, diag2, e); if(g.bottleneck_alive() == std::numeric_limits<double>::infinity()) return std::numeric_limits<double>::infinity(); diff --git a/src/Bottleneck_distance/test/bottleneck_chrono.cpp b/src/Bottleneck_distance/test/bottleneck_chrono.cpp index 0a3bb012..a30d42b5 100644 --- a/src/Bottleneck_distance/test/bottleneck_chrono.cpp +++ b/src/Bottleneck_distance/test/bottleneck_chrono.cpp @@ -34,7 +34,7 @@ int main(){ std::ofstream objetfichier; objetfichier.open("results.csv", std::ios::out); - for(int n = 1000; n<=4000; n+=1000){ + for(int n = 1000; n<=10000; n+=1000){ std::uniform_real_distribution<double> unif1(0.,upper_bound); std::uniform_real_distribution<double> unif2(upper_bound/1000.,upper_bound/100.); std::default_random_engine re; |