Module LinearAlgebra.Make_Module

Parameters

module Ring : Ring_sig

Signature

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

val identity : int -> matrix

identity n is the identity matrix of dimension 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

val row_swap : int -> int -> matrix -> unit

row_swap i j m swaps the i-th and j-th rows of m

val row_mul : t -> int -> matrix -> unit

row_mul coeff i m multiplies the i-th row by coeff in m

val filter_cols : (int -> bool) -> matrix -> matrix

filter_cols f m removes the columns of m whose index does not satisfy f

val split_n : int -> matrix -> matrix * matrix

splits matrix m into the first n columns and the rest, producing two matrices