Crate m4ri_sys

Crate m4ri_sys 

Source
Expand description

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_build_all_codes
Generates global code book
m4ri_build_code
Fils var ord and var inc with Gray code dat afor a Gray code of length 2^l
m4ri_destroy_all_codes
Destroy global code book
m4ri_gray_code
Returns the ith Gray code entry for a gray code of length 2^l
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_free_window_const
Free a “const” window created with mzd_init_window_const.
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 Aliases§

BIT
M4RI Internal representation
Rci
M4RI Internal representation
Word
M4RI Internal representation