M4RI  1.0.1
Data Fields
mzd_t Struct Reference

Dense matrices over GF(2). More...

#include <mzd.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_tblocks
word ** rows

Detailed Description

Dense matrices over GF(2).

The most fundamental data type in this library.

Examples:
testsuite/bench_elimination.c, testsuite/test_elimination.c, testsuite/test_multiplication.c, and testsuite/test_ple.c.

Field Documentation

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.

mzd_block_t* mzd_t::blocks

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.

word mzd_t::high_bitmask

Mask for valid bits in the word with the highest index (width - 1).

word mzd_t::low_bitmask

Mask for valid bits in the word with the lowest index (0).

rci_t mzd_t::ncols

Number of columns.

Examples:
testsuite/bench_elimination.c.
rci_t mzd_t::nrows

Number of rows.

Examples:
testsuite/bench_elimination.c.
uint16_t mzd_t::offset

column offset of the first column.

wi_t mzd_t::offset_vector

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.

wi_t mzd_t::row_offset

Number of rows to the first row counting from the start of the first block.

word** mzd_t::rows

Address of first word in each row, so the first word of row i is is m->rows[i]

wi_t mzd_t::rowstride

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.

wi_t mzd_t::width

Number of words with valid bits.

width = ceil((ncols + offset) / m4ri_radix)


The documentation for this struct was generated from the following file: