Extract partial sum into an independent function. (#7889)

This commit is contained in:
Jiaming Yuan
2022-05-13 14:30:35 +08:00
committed by GitHub
parent db80671d6b
commit 11d65fcb21
7 changed files with 138 additions and 68 deletions

View File

@@ -0,0 +1,33 @@
/*!
* Copyright 2022, XGBoost contributors.
*/
#include <gtest/gtest.h>
#include <numeric>
#include "../../../src/common/numeric.h"
namespace xgboost {
namespace common {
TEST(Numeric, PartialSum) {
{
std::vector<size_t> values{1, 2, 3, 4};
std::vector<size_t> result(values.size() + 1);
Context ctx;
PartialSum(ctx.Threads(), values.begin(), values.end(), static_cast<size_t>(0), result.begin());
std::vector<size_t> sol(values.size() + 1, 0);
std::partial_sum(values.begin(), values.end(), sol.begin() + 1);
ASSERT_EQ(sol, result);
}
{
std::vector<double> values{1.5, 2.5, 3.5, 4.5};
std::vector<double> result(values.size() + 1);
Context ctx;
PartialSum(ctx.Threads(), values.begin(), values.end(), 0.0, result.begin());
std::vector<double> sol(values.size() + 1, 0.0);
std::partial_sum(values.begin(), values.end(), sol.begin() + 1);
ASSERT_EQ(sol, result);
}
}
} // namespace common
} // namespace xgboost

View File

@@ -3,6 +3,7 @@
*/
#include <gtest/gtest.h>
#include "../../../src/common/numeric.h"
#include "../../../src/tree/updater_approx.h"
#include "../helpers.h"
#include "test_partitioner.h"