M4RI
1.0.1
|
Dense matrices over GF(2). More...
#include <packedmatrix.h>
Data Fields | |
rci_t | nrows |
rci_t | ncols |
wi_t | width |
wi_t | rowstride |
wi_t | offset_vector |
wi_t | row_offset |
uint16_t | offset |
uint8_t | flags |
uint8_t | blockrows_log |
word | high_bitmask |
word | low_bitmask |
mzd_block_t * | blocks |
word ** | rows |
Dense matrices over GF(2).
The most fundamental data type in this library.
uint8_t mzd_t::blockrows_log |
blockrows_log = log2(blockrows); where blockrows is the number of rows in one block, which is a power of 2.
Contains pointers to the actual blocks of memory containing the values packed into words of size m4ri_radix.
uint8_t mzd_t::flags |
Booleans to speed up things.
The bits have the following meaning:
0: Has non-zero offset (and thus is windowed). 1: Has non-zero excess. 2: Is windowed, but has zero offset. 3: Is windowed, but has zero excess. 4: Is windowed, but owns the blocks allocations. 5: Spans more than 1 block.
Mask for valid bits in the word with the highest index (width - 1).
Mask for valid bits in the word with the lowest index (0).
Number of columns.
Number of rows.
uint16_t mzd_t::offset |
column offset of the first column.
Offset in words from start of block to first word.
rows[0] = blocks[0].begin + offset_vector; This, together with rowstride, makes the rows array obsolete.
Number of rows to the first row counting from the start of the first block.
Address of first word in each row, so the first word of row i is is m->rows[i]
Offset in words between rows.
rowstride = (width < mzd_paddingwidth || (width & 1) == 0) ? width : width + 1; where width is the width of the underlying non-windowed matrix.
Number of words with valid bits.
width = ceil((ncols + offset) / m4ri_radix)