Documentation
sprs, a sparse matrix library written in Rust
=============================================

sprs implements some sparse matrix data structures and linear algebra
algorithms.

WARNING: experimental lib, neither API nor functionality stable

License
-------

BSD license. See LICENSE.txt

Features
--------

Structures
..........

- CSR/CSC matrix, able to operate on borrowed or owned data

Operations
..........

- sparse matrix vector product
- sparse matrix matrix product
- sparse matrix matrix addition

Algorithms
..........

- Outer iterator on compressed sparse matrices
- CSC/dense vector product
- CSR/dense vector product
- sparse Cholesky decomposition

TODO
----

Structures
..........

- CSC/CSR tests with more trickier shapes/data
- lower/upper triangular CSC/CSR matrices
- block-sparse matrices

Operations
..........

- rebind operations with the corresponding traits

Algorithms
..........

- tests on the outer iterator
- tests on the CSC/vector product
- sparse triangular solve
- sparse LU decomposition

Misc
....

- Python bindings


API guidelines
--------------

Each exposed functionality should, if deemed necessary for performance reasons,
be exposed as a low-level C-style function (similar to BLAS API), and also
exposed as a high level API with good defaults for the performance related
arguments.