MCPcopy Create free account
hub / github.com/antmachineintelligence/mtgbmcode / RowFunctionFromDenseMatric

Function RowFunctionFromDenseMatric

src/c_api.cpp:1664–1708  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1662// ---- start of some help functions
1663
1664std::function<std::vector<double>(int row_idx)>
1665RowFunctionFromDenseMatric(const void* data, int num_row, int num_col, int data_type, int is_row_major) {
1666 if (data_type == C_API_DTYPE_FLOAT32) {
1667 const float* data_ptr = reinterpret_cast<const float*>(data);
1668 if (is_row_major) {
1669 return [=] (int row_idx) {
1670 std::vector<double> ret(num_col);
1671 auto tmp_ptr = data_ptr + static_cast<size_t>(num_col) * row_idx;
1672 for (int i = 0; i < num_col; ++i) {
1673 ret[i] = static_cast<double>(*(tmp_ptr + i));
1674 }
1675 return ret;
1676 };
1677 } else {
1678 return [=] (int row_idx) {
1679 std::vector<double> ret(num_col);
1680 for (int i = 0; i < num_col; ++i) {
1681 ret[i] = static_cast<double>(*(data_ptr + static_cast<size_t>(num_row) * i + row_idx));
1682 }
1683 return ret;
1684 };
1685 }
1686 } else if (data_type == C_API_DTYPE_FLOAT64) {
1687 const double* data_ptr = reinterpret_cast<const double*>(data);
1688 if (is_row_major) {
1689 return [=] (int row_idx) {
1690 std::vector<double> ret(num_col);
1691 auto tmp_ptr = data_ptr + static_cast<size_t>(num_col) * row_idx;
1692 for (int i = 0; i < num_col; ++i) {
1693 ret[i] = static_cast<double>(*(tmp_ptr + i));
1694 }
1695 return ret;
1696 };
1697 } else {
1698 return [=] (int row_idx) {
1699 std::vector<double> ret(num_col);
1700 for (int i = 0; i < num_col; ++i) {
1701 ret[i] = static_cast<double>(*(data_ptr + static_cast<size_t>(num_row) * i + row_idx));
1702 }
1703 return ret;
1704 };
1705 }
1706 }
1707 throw std::runtime_error("Unknown data type in RowFunctionFromDenseMatric");
1708}
1709
1710std::function<std::vector<std::pair<int, double>>(int row_idx)>
1711RowPairFunctionFromDenseMatric(const void* data, int num_row, int num_col, int data_type, int is_row_major) {

Callers 4

LGBM_DatasetPushRowsFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected