tatami_chunked
Helpers to create custom chunked tatami matrices
Loading...
Searching...
No Matches
ChunkDimensionStats.hpp
Go to the documentation of this file.
1#ifndef TATAMI_CHUNKED_CHUNK_DIMENSION_STATS_HPP
2#define TATAMI_CHUNKED_CHUNK_DIMENSION_STATS_HPP
3
4#include "sanisizer/sanisizer.hpp"
5
11namespace tatami_chunked {
12
23template<typename Index_>
24Index_ integer_ceil(Index_ left, Index_ right) {
25 if (right) {
26 return left / right + (left % right > 0); // avoids overflow.
27 } else {
28 return 0;
29 }
30}
31
41template<typename Index_>
49 template<typename DimExtent_, typename ChunkLength_>
56
61
66
72
76 Index_ num_chunks;
77
84};
85
94template<typename Index_>
95Index_ get_chunk_length(const ChunkDimensionStats<Index_>& stats, Index_ i) {
96 return (i + 1 == stats.num_chunks ? stats.last_chunk_length : stats.chunk_length);
97}
98
99}
100
101#endif
Methods to handle chunked tatami matrices.
Definition ChunkDimensionStats.hpp:11
Index_ get_chunk_length(const ChunkDimensionStats< Index_ > &stats, Index_ i)
Definition ChunkDimensionStats.hpp:95
Index_ integer_ceil(Index_ left, Index_ right)
Definition ChunkDimensionStats.hpp:24
Statistics for regular chunks along a dimension.
Definition ChunkDimensionStats.hpp:42
Index_ chunk_length
Definition ChunkDimensionStats.hpp:71
ChunkDimensionStats(DimExtent_ dimension_extent, ChunkLength_ chunk_length)
Definition ChunkDimensionStats.hpp:50
ChunkDimensionStats()
Definition ChunkDimensionStats.hpp:60
Index_ num_chunks
Definition ChunkDimensionStats.hpp:76
Index_ dimension_extent
Definition ChunkDimensionStats.hpp:65
Index_ last_chunk_length
Definition ChunkDimensionStats.hpp:83