Module Linalg.Mat

Linalg: matrices

module Make : functor (Repr : Basic_structures.Basic_intf.Lang.Empty) -> functor (Monad : Basic_structures.Basic_intf.Codegen_monad with type 'a m = 'a Repr.m) -> functor (S : Intf.Tensor with type 'a m = 'a Repr.m and type 'a k = 'a Monad.t) -> functor (B : Basic_structures.Basic_intf.Lang.Bool with type 'a m = 'a Repr.m) -> functor (R : Basic_structures.Basic_intf.Lang.Ring with type 'a m = 'a Repr.m) -> functor (R_storage : Basic_structures.Basic_intf.Lang.Storage with type 'a m = 'a Repr.m and type elt = R.t) -> functor (I_ring : Basic_structures.Basic_intf.Lang.Ring with type 'a m = 'a Repr.m and type t = S.pos) -> functor (E : Basic_structures.Basic_intf.Lang.Exn with type 'a m = 'a Repr.m) -> functor (M : Basic_structures.Basic_intf.Lang.Sequencing with type 'a m = 'a Repr.m) -> functor (P : Basic_structures.Basic_intf.Lang.Product with type 'a m = 'a Repr.m) -> Intf.Mat with type 'a k = 'a Monad.t and type 'a m = 'a Repr.m and type base_index = I_ring.t and type 'a shape = 'a S.t and type ('a, 'b) morphism = ('a'b) S.Morphism.t and type elt = R.t

Make takes as input the signature of an object language and generates a module to perform matrix computations in this language.

module Array_backed_column_major : functor (Repr : Basic_structures.Basic_intf.Lang.Empty) -> functor (Monad : Basic_structures.Basic_intf.Codegen_monad with type 'a m = 'a Repr.m) -> functor (S : Intf.Tensor with type 'a m = 'a Repr.m) -> functor (B : Basic_structures.Basic_intf.Lang.Bool with type 'a m = 'a Repr.m) -> functor (R : Basic_structures.Basic_intf.Lang.Ring with type 'a m = 'a Repr.m and type t = S.pos) -> functor (R_ord : Basic_structures.Basic_intf.Lang.Infix_order with type 'a m = 'a Repr.m and type t = R.t) -> functor (A : Basic_structures.Basic_intf.Lang.Array with type index = R.t and type 'a m = 'a Repr.m) -> functor (E : Basic_structures.Basic_intf.Lang.Exn with type 'a m = 'a Repr.m) -> functor (P : Basic_structures.Basic_intf.Lang.Product with type 'a m = 'a Repr.m) -> functor (M : Basic_structures.Basic_intf.Lang.Sequencing with type 'a m = 'a Repr.m) -> sig ... end

Array_backed_column_major yields a module that allows to create matrices backed by arrays. This module enforces a column-major layout for the matrix data (Fortran-style).

module Make_native : functor (R : Basic_structures.Basic_intf.Lang.Ring with type 'a m = 'a) -> functor (R_storage : Basic_structures.Basic_intf.Lang.Storage with type 'a m = 'a and type elt = R.t) -> Intf.Mat with type 'a k = 'a and type 'a m = 'a and type base_index = Tensor.Int.pos and type 'a shape = 'a Tensor.Int.t and type ('a, 'b) morphism = ('a'b) Tensor.Int.Morphism.t and type elt = R.t

Make_native specializes Make to native execution.

module Float : Intf.Mat with type 'a k = 'a and type 'a m = 'a and type base_index = Tensor.Int.pos and type 'a shape = 'a Tensor.Int.t and type ('a, 'b) morphism = ('a'b) Tensor.Int.Morphism.t and type elt = float

Float allows to manipulate float-valued matrices

module Rational : Intf.Mat with type 'a k = 'a and type 'a m = 'a and type base_index = Tensor.Int.pos and type 'a shape = 'a Tensor.Int.t and type ('a, 'b) morphism = ('a'b) Tensor.Int.Morphism.t and type elt = Q.t

Float allows to manipulate Q.t-valued matrices