[−][src]Crate sprs
sprs is a sparse linear algebra library for Rust.
It features a sparse matrix type, CsMat
, and a sparse vector type,
CsVec
, both based on the
compressed storage scheme.
Features
- sparse matrix/sparse matrix addition, multiplication.
- sparse vector/sparse vector addition, dot product.
- sparse matrix/dense matrix addition, multiplication.
- sparse triangular solves.
- powerful iteration over the sparse structure, enabling easy extension of the library.
- matrix construction using the triplet format, vertical and horizontal stacking, block construction.
- sparse cholesky solver in the separate crate
sprs-ldl
. - fully generic integer type for the storage of indices, enabling compact representations.
- planned interoperability with existing sparse solvers such as SuiteSparse.
Quick Examples
Matrix construction:
use sprs::TriMat; let mut a = TriMat::new((4, 4)); a.add_triplet(0, 0, 3.0_f64); a.add_triplet(1, 2, 2.0); a.add_triplet(3, 0, -2.0); // This matrix type does not allow computations, and must to // converted to a compatible sparse type, using for example let b = a.to_csr();
Constructing matrix using the more efficient direct sparse constructor
use sprs::{CsMat, CsVec}; let eye : CsMat<f64> = CsMat::eye(3); let a = CsMat::new_csc((3, 3), vec![0, 2, 4, 5], vec![0, 1, 0, 2, 2], vec![1., 2., 3., 4., 5.]);
Matrix vector multiplication:
use sprs::{CsMat, CsVec}; let eye = CsMat::eye(5); let x = CsVec::new(5, vec![0, 2, 4], vec![1., 2., 3.]); let y = &eye * &x; assert_eq!(x, y);
Matrix matrix multiplication, addition:
use sprs::{CsMat, CsVec}; let eye = CsMat::eye(3); let a = CsMat::new_csc((3, 3), vec![0, 2, 4, 5], vec![0, 1, 0, 2, 2], vec![1., 2., 3., 4., 5.]); let b = &eye * &a; assert_eq!(a, b.to_csc());
Re-exports
pub use crate::indexing::SpIndex; |
pub use crate::sparse::CompressedStorage::CSC; |
pub use crate::sparse::CompressedStorage::CSR; |
pub use SymmetryCheck::*; |
pub use PermutationCheck::*; |
Modules
approx | Traits for comparing vectors and matrices using the approx traits |
array_backend | Fixed size arrays usable for sparse matrices. |
binop | |
errors | Error type for sprs |
indexing | |
io | Serialization and deserialization of sparse matrices |
linalg | |
num_kinds | Trait to be able to know at runtime if a generic scalar is an integer, a float or a complex. |
prod | |
smmp | Implementation of the paper Bank and Douglas, 2001, Sparse Matrix Multiplication Package (SMPP) |
special_mats | |
stack | |
vec | |
visu |
Structs
CsIter | |
CsMatBase | Compressed matrix in the CSR or CSC format, with sorted indices. |
CsVecBase | A sparse vector, storing the indices of its non-zero data. |
OuterIterator | Iterator on the matrix' outer dimension Implemented over an iterator on the indptr array |
OuterIteratorMut | Iterator on the matrix' outer dimension Implemented over an iterator on the indptr array |
OuterIteratorPerm | Iterator on the matrix' outer dimension, permuted Implemented over an iterator on the indptr array |
Permutation | |
TriMatBase | Sparse matrix in the triplet format. |
TriMatIter | An iterator over elements of a sparse matrix, in the triplet format |
Enums
CompressedStorage | Describe the storage of a CsMat |
FillInReduction | The different kinds of fill-in-reduction algorithms supported by sprs |
PermutationCheck | Configuration enum to ask for permutation checks in algorithms |
SymmetryCheck | Configuration enum to ask for symmetry checks in algorithms |
Traits
SparseMat | A trait for common members of sparse matrices |
Functions
assign_to_dense | Assign a sparse matrix into a dense matrix |
bmat | Specify a sparse matrix by constructing it from blocks of other matrices |
hstack | Construct a sparse matrix by horizontally stacking other matrices |
is_symmetric | |
kronecker_product | Compute the Kronecker product between two matrices |
perm_is_valid | |
transform_mat_papt | Compute the square matrix resulting from the product P * A * P^T |
vstack | Construct a sparse matrix by vertically stacking other matrices |
Type Definitions
CsMat | |
CsMatI | |
CsMatVecView | |
CsMatView | |
CsMatViewI | |
CsMatViewMut | |
CsMatViewMutI | |
CsStructure | |
CsStructureI | |
CsStructureView | |
CsStructureViewI | |
CsVec | |
CsVecI | |
CsVecView | |
CsVecViewI | |
CsVecViewMut | |
CsVecViewMutI | |
Ix1 | |
Ix2 | |
PermOwned | |
PermOwnedI | |
PermView | |
PermViewI | |
Shape | The shape of a matrix. This a 2-tuple with the first element indicating the number of rows, and the second element indicating the number of columns. |
SpRes | |
TriMat | |
TriMatI | |
TriMatView | |
TriMatViewI | |
TriMatViewMut | |
TriMatViewMutI |