diff --git a/CPPFImdlp.cpp b/CPPFImdlp.cpp index b09af46..c7b4a08 100644 --- a/CPPFImdlp.cpp +++ b/CPPFImdlp.cpp @@ -25,7 +25,7 @@ namespace mdlp { throw invalid_argument("wrong proposed num_cuts value"); } if (proposed_cuts < 1) - return static_cast(round(X.size() * proposed_cuts)); + return static_cast(round(static_cast(X.size()) * proposed_cuts)); return static_cast(proposed_cuts); } diff --git a/tests/FImdlp_unittest.cpp b/tests/FImdlp_unittest.cpp index 059c592..2d40e3e 100644 --- a/tests/FImdlp_unittest.cpp +++ b/tests/FImdlp_unittest.cpp @@ -263,4 +263,15 @@ namespace mdlp { int depths[] = { 2, 2, 2, 2 }; test_dataset(test, "iris", expected, depths); } + TEST_F(TestFImdlp, ProposedCuts) + { + vector> proposed_list = { { 0.1, 2}, { 0.5, 10}, {0.07, 1}, {1, 1}, {2, 2} }; + size_t expected, computed; + for (auto proposed_item : proposed_list) { + tie(proposed_cuts, expected) = proposed_item; + computed = compute_max_num_cut_points(); + ASSERT_EQ(expected, computed); + } + + } }