SWI-Prolog pack for matrix operations. Implemented operations:
- sum
- difference
- multiplication
- Cholesky decomposition https://en.wikipedia.org/wiki/Cholesky_decomposition
- determinant for positive semi-definite matrices (using Cholesky decomposition)
- inversion for positive semi-definite matrices (using Cholesky decomposition)
- inversion for lower triangular matrices
- identity matrix
- diagonal matrix
The library was developed for dealing with multivariate Gaussian distributions, that's the reason for the focus on positive semi-definite matrices
$ swipl
?- use_module(library(matrix)).
?- determinant([[2,-1,0],[-1,2,-1],[0,-1,2]],D).
D = 3.999999999999999.