diff options
author | vrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb> | 2016-12-15 16:30:50 +0000 |
---|---|---|
committer | vrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb> | 2016-12-15 16:30:50 +0000 |
commit | 66d5bb10fcbaf75962004dfa34d8f2b8d5d23c0a (patch) | |
tree | ebbaae47d4b6efdedfab4f47f8dce4004c171e09 /src/Subsampling | |
parent | 8d594c4ab36fca026e7d11a7c214c02104ad7cbc (diff) |
Modify random and limit tests cases
git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/subsampling_and_spatialsearching@1883 636b058d-ea47-450e-bf9e-a15bfbe3eedb
Former-commit-id: 385f334f9358ae62c2ba6ec0d652ecfd52a052a7
Diffstat (limited to 'src/Subsampling')
-rw-r--r-- | src/Subsampling/include/gudhi/choose_n_farthest_points.h | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/Subsampling/include/gudhi/choose_n_farthest_points.h b/src/Subsampling/include/gudhi/choose_n_farthest_points.h index b6b7ace3..ea387bf9 100644 --- a/src/Subsampling/include/gudhi/choose_n_farthest_points.h +++ b/src/Subsampling/include/gudhi/choose_n_farthest_points.h @@ -73,10 +73,15 @@ void choose_n_farthest_points(Kernel const &k, std::size_t final_size, std::size_t starting_point, OutputIterator output_it) { - typename Kernel::Squared_distance_d sqdist = k.squared_distance_d_object(); - std::size_t nb_points = boost::size(input_pts); - assert(nb_points >= final_size); + if (final_size > nb_points) + final_size = nb_points; + + // Tests to the limit + if (final_size < 1) + return; + + typename Kernel::Squared_distance_d sqdist = k.squared_distance_d_object(); std::size_t current_number_of_landmarks = 0; // counter for landmarks const double infty = std::numeric_limits<double>::infinity(); // infinity (see next entry) @@ -132,10 +137,14 @@ void choose_n_farthest_points(Kernel const& k, Point_range const &input_pts, unsigned final_size, OutputIterator output_it) { + // Tests to the limit + if ((final_size < 1) || (input_pts.size() == 0)) + return; + // Choose randomly the first landmark std::random_device rd; std::mt19937 gen(rd()); - std::uniform_int_distribution<> dis(0, final_size); + std::uniform_int_distribution<> dis(0, (input_pts.size() - 1)); int starting_point = dis(gen); choose_n_farthest_points(k, input_pts, final_size, starting_point, output_it); } |