mec.utils
Linear_algebra.Make_Module
mec
mec.Curve
mec.CurveSig
mec.curve
mec.digestif
mec.hash
mec.permutation
mec.signature
mec_curve_utils
module Ring : Ring_sig
type t = Ring.t
type matrix = t array array
val zeros : int -> int -> matrix
zeros r c is a matrix with r rows and c columns filled with zeros
zeros r c
r
c
val identity : int -> matrix
identity n is the identity matrix of dimension n
identity n
n
val equal : matrix -> matrix -> bool
matrix equality
val add : matrix -> matrix -> matrix
matrix addition
val mul : matrix -> matrix -> matrix
matrix multiplication
val transpose : matrix -> matrix
matrix transposition
val row_add : ?coeff:t -> int -> int -> matrix -> unit
row_add ~coeff i j m adds to the i-th row, the j-th row times coeff in m
row_add ~coeff i j m
val row_swap : int -> int -> matrix -> unit
row_swap i j m swaps the i-th and j-th rows of m
row_swap i j m
val row_mul : t -> int -> matrix -> unit
row_mul coeff i m multiplies the i-th row by coeff in m
row_mul coeff i m
val filter_cols : (int -> bool) -> matrix -> matrix
filter_cols f m removes the columns of m whose index does not satisfy f
filter_cols f m
m
f
val split_n : int -> matrix -> matrix * matrix
splits matrix m into the first n columns and the rest, producing two matrices