Module LinearAlgebra.Make_VectorSpace

Parameters

module Field : Field_sig

Signature

include Module_sig with type t = Field.t
type t = Field.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

val reduced_row_echelon_form : matrix -> matrix

reduced row Echelon form of m

val inverse : matrix -> matrix

inverse m is the inverse matrix of m

  • raises [Invalid_argument]

    if m is not invertible