[mlpack-git] master, mlpack-1.0.x: Modify test for new RangeSearch API. (c5561c6)
gitdub at big.cc.gt.atl.ga.us
gitdub at big.cc.gt.atl.ga.us
Thu Mar 5 21:46:08 EST 2015
Repository : https://github.com/mlpack/mlpack
On branches: master,mlpack-1.0.x
Link : https://github.com/mlpack/mlpack/compare/904762495c039e345beba14c1142fd719b3bd50e...f94823c800ad6f7266995c700b1b630d5ffdcf40
>---------------------------------------------------------------
commit c5561c6965c54ff0c8913f1fb9b4ddcd13e41043
Author: Ryan Curtin <ryan at ratml.org>
Date: Wed Apr 9 22:27:19 2014 +0000
Modify test for new RangeSearch API.
>---------------------------------------------------------------
c5561c6965c54ff0c8913f1fb9b4ddcd13e41043
src/mlpack/tests/range_search_test.cpp | 523 +++++++++++++++++----------------
1 file changed, 266 insertions(+), 257 deletions(-)
diff --git a/src/mlpack/tests/range_search_test.cpp b/src/mlpack/tests/range_search_test.cpp
index 2b53893..3af8380 100644
--- a/src/mlpack/tests/range_search_test.cpp
+++ b/src/mlpack/tests/range_search_test.cpp
@@ -13,6 +13,8 @@
using namespace mlpack;
using namespace mlpack::range;
using namespace mlpack::math;
+using namespace mlpack::tree;
+using namespace mlpack::bound;
using namespace std;
BOOST_AUTO_TEST_SUITE(RangeSearchTest);
@@ -70,22 +72,28 @@ BOOST_AUTO_TEST_CASE(ExhaustiveSyntheticTest)
data[9] = 0.90;
data[10] = 1.00;
+ typedef BinarySpaceTree<HRectBound<2>, RangeSearchStat> TreeType;
+
// We will loop through three times, one for each method of performing the
// calculation.
+ arma::mat dataMutable = data;
+ std::vector<size_t> oldFromNew;
+ std::vector<size_t> newFromOld;
+ TreeType* tree = new TreeType(dataMutable, oldFromNew, newFromOld, 1);
for (int i = 0; i < 3; i++)
{
RangeSearch<>* rs;
- arma::mat dataMutable = data;
+
switch (i)
{
case 0: // Use the naive method.
rs = new RangeSearch<>(dataMutable, true);
break;
case 1: // Use the single-tree method.
- rs = new RangeSearch<>(dataMutable, false, true, 1);
+ rs = new RangeSearch<>(tree, dataMutable, true);
break;
case 2: // Use the dual-tree method.
- rs = new RangeSearch<>(dataMutable, false, false, 1);
+ rs = new RangeSearch<>(tree, dataMutable);
break;
}
@@ -98,171 +106,170 @@ BOOST_AUTO_TEST_CASE(ExhaustiveSyntheticTest)
vector<vector<pair<double, size_t> > > sortedOutput;
SortResults(neighbors, distances, sortedOutput);
- // Neighbors of point 0.
- BOOST_REQUIRE(sortedOutput[0].size() == 4);
- BOOST_REQUIRE(sortedOutput[0][0].second == 2);
- BOOST_REQUIRE_CLOSE(sortedOutput[0][0].first, 0.10, 1e-5);
- BOOST_REQUIRE(sortedOutput[0][1].second == 5);
- BOOST_REQUIRE_CLOSE(sortedOutput[0][1].first, 0.27, 1e-5);
- BOOST_REQUIRE(sortedOutput[0][2].second == 1);
- BOOST_REQUIRE_CLOSE(sortedOutput[0][2].first, 0.30, 1e-5);
- BOOST_REQUIRE(sortedOutput[0][3].second == 8);
- BOOST_REQUIRE_CLOSE(sortedOutput[0][3].first, 0.40, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[0]].size() == 4);
+ BOOST_REQUIRE(sortedOutput[newFromOld[0]][0].second == newFromOld[2]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[0]][0].first, 0.10, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[0]][1].second == newFromOld[5]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[0]][1].first, 0.27, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[0]][2].second == newFromOld[1]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[0]][2].first, 0.30, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[0]][3].second == newFromOld[8]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[0]][3].first, 0.40, 1e-5);
// Neighbors of point 1.
- BOOST_REQUIRE(sortedOutput[1].size() == 6);
- BOOST_REQUIRE(sortedOutput[1][0].second == 8);
- BOOST_REQUIRE_CLOSE(sortedOutput[1][0].first, 0.10, 1e-5);
- BOOST_REQUIRE(sortedOutput[1][1].second == 2);
- BOOST_REQUIRE_CLOSE(sortedOutput[1][1].first, 0.20, 1e-5);
- BOOST_REQUIRE(sortedOutput[1][2].second == 0);
- BOOST_REQUIRE_CLOSE(sortedOutput[1][2].first, 0.30, 1e-5);
- BOOST_REQUIRE(sortedOutput[1][3].second == 9);
- BOOST_REQUIRE_CLOSE(sortedOutput[1][3].first, 0.55, 1e-5);
- BOOST_REQUIRE(sortedOutput[1][4].second == 5);
- BOOST_REQUIRE_CLOSE(sortedOutput[1][4].first, 0.57, 1e-5);
- BOOST_REQUIRE(sortedOutput[1][5].second == 10);
- BOOST_REQUIRE_CLOSE(sortedOutput[1][5].first, 0.65, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[1]].size() == 6);
+ BOOST_REQUIRE(sortedOutput[newFromOld[1]][0].second == newFromOld[8]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[1]][0].first, 0.10, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[1]][1].second == newFromOld[2]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[1]][1].first, 0.20, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[1]][2].second == newFromOld[0]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[1]][2].first, 0.30, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[1]][3].second == newFromOld[9]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[1]][3].first, 0.55, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[1]][4].second == newFromOld[5]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[1]][4].first, 0.57, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[1]][5].second == newFromOld[10]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[1]][5].first, 0.65, 1e-5);
// Neighbors of point 2.
- BOOST_REQUIRE(sortedOutput[2].size() == 4);
- BOOST_REQUIRE(sortedOutput[2][0].second == 0);
- BOOST_REQUIRE_CLOSE(sortedOutput[2][0].first, 0.10, 1e-5);
- BOOST_REQUIRE(sortedOutput[2][1].second == 1);
- BOOST_REQUIRE_CLOSE(sortedOutput[2][1].first, 0.20, 1e-5);
- BOOST_REQUIRE(sortedOutput[2][2].second == 8);
- BOOST_REQUIRE_CLOSE(sortedOutput[2][2].first, 0.30, 1e-5);
- BOOST_REQUIRE(sortedOutput[2][3].second == 5);
- BOOST_REQUIRE_CLOSE(sortedOutput[2][3].first, 0.37, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[2]].size() == 4);
+ BOOST_REQUIRE(sortedOutput[newFromOld[2]][0].second == newFromOld[0]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[2]][0].first, 0.10, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[2]][1].second == newFromOld[1]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[2]][1].first, 0.20, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[2]][2].second == newFromOld[8]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[2]][2].first, 0.30, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[2]][3].second == newFromOld[5]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[2]][3].first, 0.37, 1e-5);
// Neighbors of point 3.
- BOOST_REQUIRE(sortedOutput[3].size() == 2);
- BOOST_REQUIRE(sortedOutput[3][0].second == 10);
- BOOST_REQUIRE_CLOSE(sortedOutput[3][0].first, 0.25, 1e-5);
- BOOST_REQUIRE(sortedOutput[3][1].second == 9);
- BOOST_REQUIRE_CLOSE(sortedOutput[3][1].first, 0.35, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[3]].size() == 2);
+ BOOST_REQUIRE(sortedOutput[newFromOld[3]][0].second == newFromOld[10]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[3]][0].first, 0.25, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[3]][1].second == newFromOld[9]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[3]][1].first, 0.35, 1e-5);
// Neighbors of point 4.
- BOOST_REQUIRE(sortedOutput[4].size() == 0);
+ BOOST_REQUIRE(sortedOutput[newFromOld[4]].size() == 0);
// Neighbors of point 5.
- BOOST_REQUIRE(sortedOutput[5].size() == 4);
- BOOST_REQUIRE(sortedOutput[5][0].second == 0);
- BOOST_REQUIRE_CLOSE(sortedOutput[5][0].first, 0.27, 1e-5);
- BOOST_REQUIRE(sortedOutput[5][1].second == 2);
- BOOST_REQUIRE_CLOSE(sortedOutput[5][1].first, 0.37, 1e-5);
- BOOST_REQUIRE(sortedOutput[5][2].second == 1);
- BOOST_REQUIRE_CLOSE(sortedOutput[5][2].first, 0.57, 1e-5);
- BOOST_REQUIRE(sortedOutput[5][3].second == 8);
- BOOST_REQUIRE_CLOSE(sortedOutput[5][3].first, 0.67, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[5]].size() == 4);
+ BOOST_REQUIRE(sortedOutput[newFromOld[5]][0].second == newFromOld[0]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[5]][0].first, 0.27, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[5]][1].second == newFromOld[2]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[5]][1].first, 0.37, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[5]][2].second == newFromOld[1]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[5]][2].first, 0.57, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[5]][3].second == newFromOld[8]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[5]][3].first, 0.67, 1e-5);
// Neighbors of point 6.
- BOOST_REQUIRE(sortedOutput[6].size() == 1);
- BOOST_REQUIRE(sortedOutput[6][0].second == 7);
- BOOST_REQUIRE_CLOSE(sortedOutput[6][0].first, 0.70, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[6]].size() == 1);
+ BOOST_REQUIRE(sortedOutput[newFromOld[6]][0].second == newFromOld[7]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[6]][0].first, 0.70, 1e-5);
// Neighbors of point 7.
- BOOST_REQUIRE(sortedOutput[7].size() == 1);
- BOOST_REQUIRE(sortedOutput[7][0].second == 6);
- BOOST_REQUIRE_CLOSE(sortedOutput[7][0].first, 0.70, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[7]].size() == 1);
+ BOOST_REQUIRE(sortedOutput[newFromOld[7]][0].second == newFromOld[6]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[7]][0].first, 0.70, 1e-5);
// Neighbors of point 8.
- BOOST_REQUIRE(sortedOutput[8].size() == 6);
- BOOST_REQUIRE(sortedOutput[8][0].second == 1);
- BOOST_REQUIRE_CLOSE(sortedOutput[8][0].first, 0.10, 1e-5);
- BOOST_REQUIRE(sortedOutput[8][1].second == 2);
- BOOST_REQUIRE_CLOSE(sortedOutput[8][1].first, 0.30, 1e-5);
- BOOST_REQUIRE(sortedOutput[8][2].second == 0);
- BOOST_REQUIRE_CLOSE(sortedOutput[8][2].first, 0.40, 1e-5);
- BOOST_REQUIRE(sortedOutput[8][3].second == 9);
- BOOST_REQUIRE_CLOSE(sortedOutput[8][3].first, 0.45, 1e-5);
- BOOST_REQUIRE(sortedOutput[8][4].second == 10);
- BOOST_REQUIRE_CLOSE(sortedOutput[8][4].first, 0.55, 1e-5);
- BOOST_REQUIRE(sortedOutput[8][5].second == 5);
- BOOST_REQUIRE_CLOSE(sortedOutput[8][5].first, 0.67, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[8]].size() == 6);
+ BOOST_REQUIRE(sortedOutput[newFromOld[8]][0].second == newFromOld[1]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[8]][0].first, 0.10, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[8]][1].second == newFromOld[2]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[8]][1].first, 0.30, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[8]][2].second == newFromOld[0]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[8]][2].first, 0.40, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[8]][3].second == newFromOld[9]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[8]][3].first, 0.45, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[8]][4].second == newFromOld[10]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[8]][4].first, 0.55, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[8]][5].second == newFromOld[5]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[8]][5].first, 0.67, 1e-5);
// Neighbors of point 9.
- BOOST_REQUIRE(sortedOutput[9].size() == 4);
- BOOST_REQUIRE(sortedOutput[9][0].second == 10);
- BOOST_REQUIRE_CLOSE(sortedOutput[9][0].first, 0.10, 1e-5);
- BOOST_REQUIRE(sortedOutput[9][1].second == 3);
- BOOST_REQUIRE_CLOSE(sortedOutput[9][1].first, 0.35, 1e-5);
- BOOST_REQUIRE(sortedOutput[9][2].second == 8);
- BOOST_REQUIRE_CLOSE(sortedOutput[9][2].first, 0.45, 1e-5);
- BOOST_REQUIRE(sortedOutput[9][3].second == 1);
- BOOST_REQUIRE_CLOSE(sortedOutput[9][3].first, 0.55, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[9]].size() == 4);
+ BOOST_REQUIRE(sortedOutput[newFromOld[9]][0].second == newFromOld[10]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[9]][0].first, 0.10, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[9]][1].second == newFromOld[3]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[9]][1].first, 0.35, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[9]][2].second == newFromOld[8]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[9]][2].first, 0.45, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[9]][3].second == newFromOld[1]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[9]][3].first, 0.55, 1e-5);
// Neighbors of point 10.
- BOOST_REQUIRE(sortedOutput[10].size() == 4);
- BOOST_REQUIRE(sortedOutput[10][0].second == 9);
- BOOST_REQUIRE_CLOSE(sortedOutput[10][0].first, 0.10, 1e-5);
- BOOST_REQUIRE(sortedOutput[10][1].second == 3);
- BOOST_REQUIRE_CLOSE(sortedOutput[10][1].first, 0.25, 1e-5);
- BOOST_REQUIRE(sortedOutput[10][2].second == 8);
- BOOST_REQUIRE_CLOSE(sortedOutput[10][2].first, 0.55, 1e-5);
- BOOST_REQUIRE(sortedOutput[10][3].second == 1);
- BOOST_REQUIRE_CLOSE(sortedOutput[10][3].first, 0.65, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[10]].size() == 4);
+ BOOST_REQUIRE(sortedOutput[newFromOld[10]][0].second == newFromOld[9]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[10]][0].first, 0.10, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[10]][1].second == newFromOld[3]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[10]][1].first, 0.25, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[10]][2].second == newFromOld[8]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[10]][2].first, 0.55, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[10]][3].second == newFromOld[1]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[10]][3].first, 0.65, 1e-5);
// Now do it again with a different range: [sqrt(0.5) 1.0].
rs->Search(Range(sqrt(0.5), 1.0), neighbors, distances);
SortResults(neighbors, distances, sortedOutput);
// Neighbors of point 0.
- BOOST_REQUIRE(sortedOutput[0].size() == 2);
- BOOST_REQUIRE(sortedOutput[0][0].second == 9);
- BOOST_REQUIRE_CLOSE(sortedOutput[0][0].first, 0.85, 1e-5);
- BOOST_REQUIRE(sortedOutput[0][1].second == 10);
- BOOST_REQUIRE_CLOSE(sortedOutput[0][1].first, 0.95, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[0]].size() == 2);
+ BOOST_REQUIRE(sortedOutput[newFromOld[0]][0].second == newFromOld[9]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[0]][0].first, 0.85, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[0]][1].second == newFromOld[10]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[0]][1].first, 0.95, 1e-5);
// Neighbors of point 1.
- BOOST_REQUIRE(sortedOutput[1].size() == 1);
- BOOST_REQUIRE(sortedOutput[1][0].second == 3);
- BOOST_REQUIRE_CLOSE(sortedOutput[1][0].first, 0.90, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[1]].size() == 1);
+ BOOST_REQUIRE(sortedOutput[newFromOld[1]][0].second == newFromOld[3]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[1]][0].first, 0.90, 1e-5);
// Neighbors of point 2.
- BOOST_REQUIRE(sortedOutput[2].size() == 2);
- BOOST_REQUIRE(sortedOutput[2][0].second == 9);
- BOOST_REQUIRE_CLOSE(sortedOutput[2][0].first, 0.75, 1e-5);
- BOOST_REQUIRE(sortedOutput[2][1].second == 10);
- BOOST_REQUIRE_CLOSE(sortedOutput[2][1].first, 0.85, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[2]].size() == 2);
+ BOOST_REQUIRE(sortedOutput[newFromOld[2]][0].second == newFromOld[9]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[2]][0].first, 0.75, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[2]][1].second == newFromOld[10]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[2]][1].first, 0.85, 1e-5);
// Neighbors of point 3.
- BOOST_REQUIRE(sortedOutput[3].size() == 2);
- BOOST_REQUIRE(sortedOutput[3][0].second == 8);
- BOOST_REQUIRE_CLOSE(sortedOutput[3][0].first, 0.80, 1e-5);
- BOOST_REQUIRE(sortedOutput[3][1].second == 1);
- BOOST_REQUIRE_CLOSE(sortedOutput[3][1].first, 0.90, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[3]].size() == 2);
+ BOOST_REQUIRE(sortedOutput[newFromOld[3]][0].second == newFromOld[8]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[3]][0].first, 0.80, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[3]][1].second == newFromOld[1]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[3]][1].first, 0.90, 1e-5);
// Neighbors of point 4.
- BOOST_REQUIRE(sortedOutput[4].size() == 0);
+ BOOST_REQUIRE(sortedOutput[newFromOld[4]].size() == 0);
// Neighbors of point 5.
- BOOST_REQUIRE(sortedOutput[5].size() == 0);
+ BOOST_REQUIRE(sortedOutput[newFromOld[5]].size() == 0);
// Neighbors of point 6.
- BOOST_REQUIRE(sortedOutput[6].size() == 0);
+ BOOST_REQUIRE(sortedOutput[newFromOld[6]].size() == 0);
// Neighbors of point 7.
- BOOST_REQUIRE(sortedOutput[7].size() == 0);
+ BOOST_REQUIRE(sortedOutput[newFromOld[7]].size() == 0);
// Neighbors of point 8.
- BOOST_REQUIRE(sortedOutput[8].size() == 1);
- BOOST_REQUIRE(sortedOutput[8][0].second == 3);
- BOOST_REQUIRE_CLOSE(sortedOutput[8][0].first, 0.80, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[8]].size() == 1);
+ BOOST_REQUIRE(sortedOutput[newFromOld[8]][0].second == newFromOld[3]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[8]][0].first, 0.80, 1e-5);
// Neighbors of point 9.
- BOOST_REQUIRE(sortedOutput[9].size() == 2);
- BOOST_REQUIRE(sortedOutput[9][0].second == 2);
- BOOST_REQUIRE_CLOSE(sortedOutput[9][0].first, 0.75, 1e-5);
- BOOST_REQUIRE(sortedOutput[9][1].second == 0);
- BOOST_REQUIRE_CLOSE(sortedOutput[9][1].first, 0.85, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[9]].size() == 2);
+ BOOST_REQUIRE(sortedOutput[newFromOld[9]][0].second == newFromOld[2]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[9]][0].first, 0.75, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[9]][1].second == newFromOld[0]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[9]][1].first, 0.85, 1e-5);
// Neighbors of point 10.
- BOOST_REQUIRE(sortedOutput[10].size() == 2);
- BOOST_REQUIRE(sortedOutput[10][0].second == 2);
- BOOST_REQUIRE_CLOSE(sortedOutput[10][0].first, 0.85, 1e-5);
- BOOST_REQUIRE(sortedOutput[10][1].second == 0);
- BOOST_REQUIRE_CLOSE(sortedOutput[10][1].first, 0.95, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[10]].size() == 2);
+ BOOST_REQUIRE(sortedOutput[newFromOld[10]][0].second == newFromOld[2]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[10]][0].first, 0.85, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[10]][1].second == newFromOld[0]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[10]][1].first, 0.95, 1e-5);
// Now do it again with a different range: [1.0 inf].
rs->Search(Range(1.0, numeric_limits<double>::infinity()), neighbors,
@@ -270,165 +277,167 @@ BOOST_AUTO_TEST_CASE(ExhaustiveSyntheticTest)
SortResults(neighbors, distances, sortedOutput);
// Neighbors of point 0.
- BOOST_REQUIRE(sortedOutput[0].size() == 4);
- BOOST_REQUIRE(sortedOutput[0][0].second == 3);
- BOOST_REQUIRE_CLOSE(sortedOutput[0][0].first, 1.20, 1e-5);
- BOOST_REQUIRE(sortedOutput[0][1].second == 7);
- BOOST_REQUIRE_CLOSE(sortedOutput[0][1].first, 1.35, 1e-5);
- BOOST_REQUIRE(sortedOutput[0][2].second == 6);
- BOOST_REQUIRE_CLOSE(sortedOutput[0][2].first, 2.05, 1e-5);
- BOOST_REQUIRE(sortedOutput[0][3].second == 4);
- BOOST_REQUIRE_CLOSE(sortedOutput[0][3].first, 5.00, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[0]].size() == 4);
+ BOOST_REQUIRE(sortedOutput[newFromOld[0]][0].second == newFromOld[3]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[0]][0].first, 1.20, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[0]][1].second == newFromOld[7]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[0]][1].first, 1.35, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[0]][2].second == newFromOld[6]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[0]][2].first, 2.05, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[0]][3].second == newFromOld[4]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[0]][3].first, 5.00, 1e-5);
// Neighbors of point 1.
- BOOST_REQUIRE(sortedOutput[1].size() == 3);
- BOOST_REQUIRE(sortedOutput[1][0].second == 7);
- BOOST_REQUIRE_CLOSE(sortedOutput[1][0].first, 1.65, 1e-5);
- BOOST_REQUIRE(sortedOutput[1][1].second == 6);
- BOOST_REQUIRE_CLOSE(sortedOutput[1][1].first, 2.35, 1e-5);
- BOOST_REQUIRE(sortedOutput[1][2].second == 4);
- BOOST_REQUIRE_CLOSE(sortedOutput[1][2].first, 4.70, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[1]].size() == 3);
+ BOOST_REQUIRE(sortedOutput[newFromOld[1]][0].second == newFromOld[7]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[1]][0].first, 1.65, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[1]][1].second == newFromOld[6]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[1]][1].first, 2.35, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[1]][2].second == newFromOld[4]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[1]][2].first, 4.70, 1e-5);
// Neighbors of point 2.
- BOOST_REQUIRE(sortedOutput[2].size() == 4);
- BOOST_REQUIRE(sortedOutput[2][0].second == 3);
- BOOST_REQUIRE_CLOSE(sortedOutput[2][0].first, 1.10, 1e-5);
- BOOST_REQUIRE(sortedOutput[2][1].second == 7);
- BOOST_REQUIRE_CLOSE(sortedOutput[2][1].first, 1.45, 1e-5);
- BOOST_REQUIRE(sortedOutput[2][2].second == 6);
- BOOST_REQUIRE_CLOSE(sortedOutput[2][2].first, 2.15, 1e-5);
- BOOST_REQUIRE(sortedOutput[2][3].second == 4);
- BOOST_REQUIRE_CLOSE(sortedOutput[2][3].first, 4.90, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[2]].size() == 4);
+ BOOST_REQUIRE(sortedOutput[newFromOld[2]][0].second == newFromOld[3]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[2]][0].first, 1.10, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[2]][1].second == newFromOld[7]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[2]][1].first, 1.45, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[2]][2].second == newFromOld[6]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[2]][2].first, 2.15, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[2]][3].second == newFromOld[4]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[2]][3].first, 4.90, 1e-5);
// Neighbors of point 3.
- BOOST_REQUIRE(sortedOutput[3].size() == 6);
- BOOST_REQUIRE(sortedOutput[3][0].second == 2);
- BOOST_REQUIRE_CLOSE(sortedOutput[3][0].first, 1.10, 1e-5);
- BOOST_REQUIRE(sortedOutput[3][1].second == 0);
- BOOST_REQUIRE_CLOSE(sortedOutput[3][1].first, 1.20, 1e-5);
- BOOST_REQUIRE(sortedOutput[3][2].second == 5);
- BOOST_REQUIRE_CLOSE(sortedOutput[3][2].first, 1.47, 1e-5);
- BOOST_REQUIRE(sortedOutput[3][3].second == 7);
- BOOST_REQUIRE_CLOSE(sortedOutput[3][3].first, 2.55, 1e-5);
- BOOST_REQUIRE(sortedOutput[3][4].second == 6);
- BOOST_REQUIRE_CLOSE(sortedOutput[3][4].first, 3.25, 1e-5);
- BOOST_REQUIRE(sortedOutput[3][5].second == 4);
- BOOST_REQUIRE_CLOSE(sortedOutput[3][5].first, 3.80, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[3]].size() == 6);
+ BOOST_REQUIRE(sortedOutput[newFromOld[3]][0].second == newFromOld[2]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[3]][0].first, 1.10, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[3]][1].second == newFromOld[0]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[3]][1].first, 1.20, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[3]][2].second == newFromOld[5]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[3]][2].first, 1.47, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[3]][3].second == newFromOld[7]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[3]][3].first, 2.55, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[3]][4].second == newFromOld[6]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[3]][4].first, 3.25, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[3]][5].second == newFromOld[4]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[3]][5].first, 3.80, 1e-5);
// Neighbors of point 4.
- BOOST_REQUIRE(sortedOutput[4].size() == 10);
- BOOST_REQUIRE(sortedOutput[4][0].second == 3);
- BOOST_REQUIRE_CLOSE(sortedOutput[4][0].first, 3.80, 1e-5);
- BOOST_REQUIRE(sortedOutput[4][1].second == 10);
- BOOST_REQUIRE_CLOSE(sortedOutput[4][1].first, 4.05, 1e-5);
- BOOST_REQUIRE(sortedOutput[4][2].second == 9);
- BOOST_REQUIRE_CLOSE(sortedOutput[4][2].first, 4.15, 1e-5);
- BOOST_REQUIRE(sortedOutput[4][3].second == 8);
- BOOST_REQUIRE_CLOSE(sortedOutput[4][3].first, 4.60, 1e-5);
- BOOST_REQUIRE(sortedOutput[4][4].second == 1);
- BOOST_REQUIRE_CLOSE(sortedOutput[4][4].first, 4.70, 1e-5);
- BOOST_REQUIRE(sortedOutput[4][5].second == 2);
- BOOST_REQUIRE_CLOSE(sortedOutput[4][5].first, 4.90, 1e-5);
- BOOST_REQUIRE(sortedOutput[4][6].second == 0);
- BOOST_REQUIRE_CLOSE(sortedOutput[4][6].first, 5.00, 1e-5);
- BOOST_REQUIRE(sortedOutput[4][7].second == 5);
- BOOST_REQUIRE_CLOSE(sortedOutput[4][7].first, 5.27, 1e-5);
- BOOST_REQUIRE(sortedOutput[4][8].second == 7);
- BOOST_REQUIRE_CLOSE(sortedOutput[4][8].first, 6.35, 1e-5);
- BOOST_REQUIRE(sortedOutput[4][9].second == 6);
- BOOST_REQUIRE_CLOSE(sortedOutput[4][9].first, 7.05, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[4]].size() == 10);
+ BOOST_REQUIRE(sortedOutput[newFromOld[4]][0].second == newFromOld[3]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[4]][0].first, 3.80, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[4]][1].second == newFromOld[10]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[4]][1].first, 4.05, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[4]][2].second == newFromOld[9]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[4]][2].first, 4.15, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[4]][3].second == newFromOld[8]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[4]][3].first, 4.60, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[4]][4].second == newFromOld[1]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[4]][4].first, 4.70, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[4]][5].second == newFromOld[2]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[4]][5].first, 4.90, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[4]][6].second == newFromOld[0]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[4]][6].first, 5.00, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[4]][7].second == newFromOld[5]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[4]][7].first, 5.27, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[4]][8].second == newFromOld[7]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[4]][8].first, 6.35, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[4]][9].second == newFromOld[6]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[4]][9].first, 7.05, 1e-5);
// Neighbors of point 5.
- BOOST_REQUIRE(sortedOutput[5].size() == 6);
- BOOST_REQUIRE(sortedOutput[5][0].second == 7);
- BOOST_REQUIRE_CLOSE(sortedOutput[5][0].first, 1.08, 1e-5);
- BOOST_REQUIRE(sortedOutput[5][1].second == 9);
- BOOST_REQUIRE_CLOSE(sortedOutput[5][1].first, 1.12, 1e-5);
- BOOST_REQUIRE(sortedOutput[5][2].second == 10);
- BOOST_REQUIRE_CLOSE(sortedOutput[5][2].first, 1.22, 1e-5);
- BOOST_REQUIRE(sortedOutput[5][3].second == 3);
- BOOST_REQUIRE_CLOSE(sortedOutput[5][3].first, 1.47, 1e-5);
- BOOST_REQUIRE(sortedOutput[5][4].second == 6);
- BOOST_REQUIRE_CLOSE(sortedOutput[5][4].first, 1.78, 1e-5);
- BOOST_REQUIRE(sortedOutput[5][5].second == 4);
- BOOST_REQUIRE_CLOSE(sortedOutput[5][5].first, 5.27, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[5]].size() == 6);
+ BOOST_REQUIRE(sortedOutput[newFromOld[5]][0].second == newFromOld[7]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[5]][0].first, 1.08, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[5]][1].second == newFromOld[9]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[5]][1].first, 1.12, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[5]][2].second == newFromOld[10]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[5]][2].first, 1.22, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[5]][3].second == newFromOld[3]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[5]][3].first, 1.47, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[5]][4].second == newFromOld[6]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[5]][4].first, 1.78, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[5]][5].second == newFromOld[4]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[5]][5].first, 5.27, 1e-5);
// Neighbors of point 6.
- BOOST_REQUIRE(sortedOutput[6].size() == 9);
- BOOST_REQUIRE(sortedOutput[6][0].second == 5);
- BOOST_REQUIRE_CLOSE(sortedOutput[6][0].first, 1.78, 1e-5);
- BOOST_REQUIRE(sortedOutput[6][1].second == 0);
- BOOST_REQUIRE_CLOSE(sortedOutput[6][1].first, 2.05, 1e-5);
- BOOST_REQUIRE(sortedOutput[6][2].second == 2);
- BOOST_REQUIRE_CLOSE(sortedOutput[6][2].first, 2.15, 1e-5);
- BOOST_REQUIRE(sortedOutput[6][3].second == 1);
- BOOST_REQUIRE_CLOSE(sortedOutput[6][3].first, 2.35, 1e-5);
- BOOST_REQUIRE(sortedOutput[6][4].second == 8);
- BOOST_REQUIRE_CLOSE(sortedOutput[6][4].first, 2.45, 1e-5);
- BOOST_REQUIRE(sortedOutput[6][5].second == 9);
- BOOST_REQUIRE_CLOSE(sortedOutput[6][5].first, 2.90, 1e-5);
- BOOST_REQUIRE(sortedOutput[6][6].second == 10);
- BOOST_REQUIRE_CLOSE(sortedOutput[6][6].first, 3.00, 1e-5);
- BOOST_REQUIRE(sortedOutput[6][7].second == 3);
- BOOST_REQUIRE_CLOSE(sortedOutput[6][7].first, 3.25, 1e-5);
- BOOST_REQUIRE(sortedOutput[6][8].second == 4);
- BOOST_REQUIRE_CLOSE(sortedOutput[6][8].first, 7.05, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[6]].size() == 9);
+ BOOST_REQUIRE(sortedOutput[newFromOld[6]][0].second == newFromOld[5]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[6]][0].first, 1.78, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[6]][1].second == newFromOld[0]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[6]][1].first, 2.05, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[6]][2].second == newFromOld[2]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[6]][2].first, 2.15, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[6]][3].second == newFromOld[1]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[6]][3].first, 2.35, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[6]][4].second == newFromOld[8]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[6]][4].first, 2.45, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[6]][5].second == newFromOld[9]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[6]][5].first, 2.90, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[6]][6].second == newFromOld[10]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[6]][6].first, 3.00, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[6]][7].second == newFromOld[3]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[6]][7].first, 3.25, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[6]][8].second == newFromOld[4]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[6]][8].first, 7.05, 1e-5);
// Neighbors of point 7.
- BOOST_REQUIRE(sortedOutput[7].size() == 9);
- BOOST_REQUIRE(sortedOutput[7][0].second == 5);
- BOOST_REQUIRE_CLOSE(sortedOutput[7][0].first, 1.08, 1e-5);
- BOOST_REQUIRE(sortedOutput[7][1].second == 0);
- BOOST_REQUIRE_CLOSE(sortedOutput[7][1].first, 1.35, 1e-5);
- BOOST_REQUIRE(sortedOutput[7][2].second == 2);
- BOOST_REQUIRE_CLOSE(sortedOutput[7][2].first, 1.45, 1e-5);
- BOOST_REQUIRE(sortedOutput[7][3].second == 1);
- BOOST_REQUIRE_CLOSE(sortedOutput[7][3].first, 1.65, 1e-5);
- BOOST_REQUIRE(sortedOutput[7][4].second == 8);
- BOOST_REQUIRE_CLOSE(sortedOutput[7][4].first, 1.75, 1e-5);
- BOOST_REQUIRE(sortedOutput[7][5].second == 9);
- BOOST_REQUIRE_CLOSE(sortedOutput[7][5].first, 2.20, 1e-5);
- BOOST_REQUIRE(sortedOutput[7][6].second == 10);
- BOOST_REQUIRE_CLOSE(sortedOutput[7][6].first, 2.30, 1e-5);
- BOOST_REQUIRE(sortedOutput[7][7].second == 3);
- BOOST_REQUIRE_CLOSE(sortedOutput[7][7].first, 2.55, 1e-5);
- BOOST_REQUIRE(sortedOutput[7][8].second == 4);
- BOOST_REQUIRE_CLOSE(sortedOutput[7][8].first, 6.35, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[7]].size() == 9);
+ BOOST_REQUIRE(sortedOutput[newFromOld[7]][0].second == newFromOld[5]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[7]][0].first, 1.08, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[7]][1].second == newFromOld[0]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[7]][1].first, 1.35, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[7]][2].second == newFromOld[2]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[7]][2].first, 1.45, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[7]][3].second == newFromOld[1]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[7]][3].first, 1.65, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[7]][4].second == newFromOld[8]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[7]][4].first, 1.75, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[7]][5].second == newFromOld[9]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[7]][5].first, 2.20, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[7]][6].second == newFromOld[10]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[7]][6].first, 2.30, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[7]][7].second == newFromOld[3]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[7]][7].first, 2.55, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[7]][8].second == newFromOld[4]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[7]][8].first, 6.35, 1e-5);
// Neighbors of point 8.
- BOOST_REQUIRE(sortedOutput[8].size() == 3);
- BOOST_REQUIRE(sortedOutput[8][0].second == 7);
- BOOST_REQUIRE_CLOSE(sortedOutput[8][0].first, 1.75, 1e-5);
- BOOST_REQUIRE(sortedOutput[8][1].second == 6);
- BOOST_REQUIRE_CLOSE(sortedOutput[8][1].first, 2.45, 1e-5);
- BOOST_REQUIRE(sortedOutput[8][2].second == 4);
- BOOST_REQUIRE_CLOSE(sortedOutput[8][2].first, 4.60, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[8]].size() == 3);
+ BOOST_REQUIRE(sortedOutput[newFromOld[8]][0].second == newFromOld[7]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[8]][0].first, 1.75, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[8]][1].second == newFromOld[6]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[8]][1].first, 2.45, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[8]][2].second == newFromOld[4]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[8]][2].first, 4.60, 1e-5);
// Neighbors of point 9.
- BOOST_REQUIRE(sortedOutput[9].size() == 4);
- BOOST_REQUIRE(sortedOutput[9][0].second == 5);
- BOOST_REQUIRE_CLOSE(sortedOutput[9][0].first, 1.12, 1e-5);
- BOOST_REQUIRE(sortedOutput[9][1].second == 7);
- BOOST_REQUIRE_CLOSE(sortedOutput[9][1].first, 2.20, 1e-5);
- BOOST_REQUIRE(sortedOutput[9][2].second == 6);
- BOOST_REQUIRE_CLOSE(sortedOutput[9][2].first, 2.90, 1e-5);
- BOOST_REQUIRE(sortedOutput[9][3].second == 4);
- BOOST_REQUIRE_CLOSE(sortedOutput[9][3].first, 4.15, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[9]].size() == 4);
+ BOOST_REQUIRE(sortedOutput[newFromOld[9]][0].second == newFromOld[5]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[9]][0].first, 1.12, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[9]][1].second == newFromOld[7]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[9]][1].first, 2.20, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[9]][2].second == newFromOld[6]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[9]][2].first, 2.90, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[9]][3].second == newFromOld[4]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[9]][3].first, 4.15, 1e-5);
// Neighbors of point 10.
- BOOST_REQUIRE(sortedOutput[10].size() == 4);
- BOOST_REQUIRE(sortedOutput[10][0].second == 5);
- BOOST_REQUIRE_CLOSE(sortedOutput[10][0].first, 1.22, 1e-5);
- BOOST_REQUIRE(sortedOutput[10][1].second == 7);
- BOOST_REQUIRE_CLOSE(sortedOutput[10][1].first, 2.30, 1e-5);
- BOOST_REQUIRE(sortedOutput[10][2].second == 6);
- BOOST_REQUIRE_CLOSE(sortedOutput[10][2].first, 3.00, 1e-5);
- BOOST_REQUIRE(sortedOutput[10][3].second == 4);
- BOOST_REQUIRE_CLOSE(sortedOutput[10][3].first, 4.05, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[10]].size() == 4);
+ BOOST_REQUIRE(sortedOutput[newFromOld[10]][0].second == newFromOld[5]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[10]][0].first, 1.22, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[10]][1].second == newFromOld[7]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[10]][1].first, 2.30, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[10]][2].second == newFromOld[6]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[10]][2].first, 3.00, 1e-5);
+ BOOST_REQUIRE(sortedOutput[newFromOld[10]][3].second == newFromOld[4]);
+ BOOST_REQUIRE_CLOSE(sortedOutput[newFromOld[10]][3].first, 4.05, 1e-5);
// Clean the memory.
delete rs;
}
+
+ delete tree;
}
/**
More information about the mlpack-git
mailing list