30 static_assert(std::is_same_v<T, float> || std::is_same_v<T, double>,
51 [[nodiscard]] std::vector<std::vector<std::int32_t>>
query(T radius,
math::Pool pool)
const {
52 const std::size_t n = m_points.dim(0);
53 std::vector<std::vector<std::int32_t>> adj(n);
64 const T radiusSq = radius * radius;
69 auto emit = [&adj](std::size_t row, std::size_t col) {
70 adj[row].push_back(
static_cast<std::int32_t
>(col));
78 for (std::size_t i = 0; i < n; ++i) {
79 const std::size_t origSize = adj[i].size();
80 for (std::size_t k = 0; k < origSize; ++k) {
81 const auto jSigned = adj[i][k];
82 const auto j =
static_cast<std::size_t
>(jSigned);
84 adj[j].push_back(
static_cast<std::int32_t
>(i));