[][src]Crate m4ri_sys

Implements the FFI to M4RI

See https://bitbucket.org/malb/m4ri

Structs

Code
Djb
Mzd

Represents the Mzd data type used by M4RI

Mzp

Enums

Srctyp

Statics

MZD_FLAG_MULTIPLE_BLOCKS

Flag for multiple blocks

MZD_FLAG_NONZERO_EXCESS

Flag when ncols%64 == 0

MZD_FLAG_WINDOWED_OWNSBLOCKS

Flag for windowed matrix which owns its memory

MZD_FLAG_WINDOWED_ZEROEXCESS

Flag for windowed matrix where ncols % 64 == 0

MZD_FLAG_WINDOWED_ZEROOFFSET

Flag for windowed matrix

Functions

Mzp_free_window

Free a permutation window created with Mzp_init_window

_mzd_mul_naive

brief Naive cubic matrix multiplication with the pre-transposed B.

_mzd_mul_va

Matrix multiplication optimized for v*A where v is a vector

djb_apply_mzd

apply the linear map m to V and write the result in W

djb_compile

Compile an new DJB linear map from A

djb_free

free a DJB linear map

djb_info

Print information on linear map mA

djb_init

Allocate a new DJB linear map

djb_push_back

Add a new operation out[target] ^= srctype[source] to queue

m4ri_gray_code

Returns the ith Gray code entry for a gray code of length 2^l

m4ri_build_code

Fils var ord and var inc with Gray code dat afor a Gray code of length 2^l

m4ri_build_all_codes

Generates global code book

m4ri_destroy_all_codes

Destroy global code book

m4ri_opt_k

Return the optimal var k for the given parameters

mzd_add

Set C = A + B If C is passed in, the result is written there otherwise a new matrix is created

mzd_addmul

\brief Matrix multiplication and in-place addition via the Strassen-Winograd matrix multiplication algorithm, i.e. compute C = C+ AB.

mzd_addmul_m4rm

Set C to C + AB using Konrods Method

mzd_addmul_mp

Matrix multiplication and in-place additoin via th ecubic matrix multiplication algorithm on multiple cores. C = C + AB

mzd_addmul_naive

naive cubic matrix multiplication and addition

mzd_apply_p_left

Apply the permutation P to A from the left

mzd_apply_p_left_trans

Apply the permutation P to A from the left, but transpose P

mzd_apply_p_right

Apply the permutation P to A from the right

mzd_apply_p_right_trans

Apply the permutation P to A from the right, but transpose P

mzd_col_swap

Swap the two columns cola and colb

mzd_concat

Concatenate B to A and write the result to C

mzd_copy

Copy a matrix to dest

mzd_copy_row

\brief copy row j from A to row i from B.

mzd_echelonize

(Reduced) row echelon form

mzd_echelonize_m4ri

Matrix elimination using the method of the four russians

mzd_echelonize_pluq

(Reduced) row echelon form using PLUQ factorisation

mzd_equal

Return true if A == B

mzd_first_row

Get a pointer to the first word

mzd_free

Free a matrix created with mzd_init. Automatically done by the Deref trait on Mzd

mzd_free_window

Free a matrix window created with mzd_init_window

mzd_init

Create a new rows x columns matrix

mzd_init_window

\brief Create a window/view into the matrix M.

mzd_init_window_const

Create a const window/view into a const matrix

mzd_inv_m4ri

Invert the matrix using Konrod's method

mzd_invert_naive

Invert the target matrix using gaussian elimination To avoid recomputing the identity matrix over and over again, I may be passed in as identity parameter The first parameter may be null to have the space automatically allocated

mzd_is_windowed

Test if a matrix is windowed

mzd_is_zero

Zero test for matrix

mzd_make_table

Constructs all possible 2^k row combinations using the gray code table

mzd_mul

\brief Matrix multiplication via the Strassen-Winograd matrix multiplication algorithm, i.e. compute C = AB.

mzd_mul_m4rm

Matrix multiplication using Konrods Method

mzd_mul_mp

Matrix multiplication via the cubic multiplication algorithm on multiple cores

mzd_mul_naive

naive cubic matrix multiplication the first argument may be null for automatic creation

mzd_owns_blocks

Test if this mzd_t should free blocks

mzd_ple

PLE matrix decomposition.

mzd_pluq

PLUQ matrix decomposition.

mzd_pluq_solve_left

Solves (P L U Q) X = B

mzd_process_rows

The function looks up k bits from position i, startcol in each row and adds the appropriate row from T to the row i

mzd_process_rows2

Same as mzd_process_rows but works with two Gray code tables in parallel

mzd_process_rows3

Same as mzd_process_rows but works with three Gray code tables in parallel

mzd_process_rows4

Same as mzd_process_rows but works with four Gray code tables in parallel

mzd_process_rows5

Same as mzd_process_rows but works with five Gray code tables in parallel

mzd_process_rows6

Same as mzd_process_rows but works with six Gray code tables in parallel

mzd_randomize

Fill the matrix m with uniformly distributed bits.

mzd_read_bit

Read the bit at position M[row, col]

mzd_row

Get pointer to first word of row

mzd_row_clear_offset

Clear the given row, but only begins at the column coloffset.

mzd_row_swap

Swap the two rows rowa and rowb

mzd_set_ui

Set to identity matrix if the second argument is 1

mzd_solve_left

Solves A X = B with A and B matrices.

mzd_stack

Stack A on top of B into C

mzd_sub

Set C = A - B If C is passed in, the result is written there otherwise a new matrix is created

mzd_submatrix

Copy a submatrix first argument may be preallocated space or null

mzd_top_echelonize_m4ri

Matrix elimination using the Method of the four russians (m4ri)

mzd_transpose

Transpose a matrix Dest may be null for automatic creation

mzd_write_bit

Write the bit to position M[row, col]

mzp_copy

Copy permutation Q to P Target may be null

mzp_free

Free an Mzp

mzp_init

Construct an identity permutation

mzp_init_window

Create a window into the permutation

mzp_print

Print the mzp

mzp_set_ui

Set the permutation to the identity permutation

Type Definitions

BIT

M4RI Internal representation

Rci

M4RI Internal representation

Word

M4RI Internal representation