Module Core_bench.Linear_algebra

module Vec : sig ... end

Vectors

module Mat : sig ... end

Matrices

val qr : ?⁠in_place:bool ‑> Mat.t ‑> Mat.t * Mat.t

qr A returns the QR-decomposition of A as a pair (Q,R). A must have at least as many rows as columns and have full rank.

If in_place (default: false) is true, then A is overwritten with Q.

val triu_solve : Mat.t ‑> Vec.t ‑> Vec.t Core.Or_error.t

triu_solve R b solves R x = b where R is an m x m upper-triangular matrix and b is an m x 1 column vector.

val mul_mv : ?⁠transa:bool ‑> Mat.t ‑> Vec.t ‑> Vec.t

mul_mv A x computes the product A * x (where M is a matrix and x is a column vector).

val ols : ?⁠in_place:bool ‑> Mat.t ‑> Vec.t ‑> Vec.t Core.Or_error.t

ols A b computes the ordinary least-squares solution to A x = b. A must have at least as many rows as columns and have full rank.

This can be used to compute solutions to non-singular square systems, but is somewhat sub-optimal for that purpose. The algorithm is to factor A = Q * R and solve R x = Q' b where Q' denotes the transpose of Q.

If in_place (default: false) is true, then A will be destroyed.