- Add net10.0 and remove net6.0 target framework.
- Minor optimizations for matrix-vector multiplication.
- Minor optimizations checking empty Span.
- Make
SymbolicColumnStorageclass public and updateStronglyConnectedComponentsandDulmageMendelsohndecomposition accordingly.
- Add overload for creating a sparse matrix from an enumerable of
ValueTuple. - Add matrix
EnumerateIndexedAsValueTuples()to enumerate entries asValueTuple.
The major version change is due to the removal of obsolete methods in the Converter class. Visibility of that class was changed from public to internal. In case those obsolete methods were still used, please switch to the static conversion methods provided by the SparseMatrix class.
Additional changes:
- Add helper method
Helper.ValidateStorage(...)to validate the structure of a sparse matrix. - Update to
GetHashCode()method ofCompressedColumnStorageclass. - Improvements to documentation.
- Add overloads for permutation
Invert()andIsValid()methods taking the permutation length as argument.
- Add overloads for the factorization
Solve()methods takingSpan<T>as argument. Note that this introduces a dependency onSystem.Memoryfor the netstandard2.0 assembly.
- Add sparse matrix
OfDiagonalsstatic method (similar to MATLAB spdiags).
- Remove .NET 4.5 target framework, upgrade .NET 5.0 to 6.0.
- Add constructor that takes explicit non-zeros count to
CoordinateStorageclass.
- Remove .NET 4.0 target framework, add .NET 5.0.
- Add
CoordinateStorageconstructor that uses existing storage arrays. - Convert
CoordinateStorageto sparse matrix in place.
- BREAKING: make
SparseLDLconstructor private (use static create methods instead). - Add complex version of
SparseLDL. - Add
matrix.EnumerateIndexed(action)overload.
- Add
SolveTransposemethod forSparseQR.
This release introduces the static SparseMatrix.AutoTrimStorage option, which enables control over hidden memory allocations in matrix addition and multiplication. By default, the matrix storage will be resized to exactly fit the non-zeros count, which involves new memory allocations. If you want to avoid this, set AutoTrimStorage to false.
Additional changes:
- Add public helper methods
Helper.TrimStrorage(...)andHelper.SortIndices(...) - Add
DenseMatrix.OfJaggedArray(...)
- Add a sparse matrix multiplication overload that accepts the result matrix as a parameter.
- Make CSparse.NET CLS compliant
- Mark public methods of Converter class as obsolete
- Improved validation of matrix constructor arguments
- Fixes an issue with
CoordinateStoragethrowingIndexOutOfRangeException(introduced in v3.4.0)
- Parallel dense and sparse matrix multiplication (by Andreas Girgensohn)
- General performance improvements for sparse matrix addition and multiplication
- Support more target frameworks (including netstandard2.0).
- Public access to members of Dulmage-Mendelsohn decomposition.
- Compute strongly connected components.
- Added matrix creation helper (e.g. call
SparseMatrix.OfIndexed(s)to convert coordinate storage).
- Added MatrixMarket writer.
- BREAKING: make
IProgress interfacecompatible with .NET 4.5.
- Added new
DenseMatrixtype. - BREAKING: removed deprecated
CompressedColumnStoragetype. - BREAKING: removed deprecated
matrix.Norm(int)method.
- Rename
CompressedColumnStoragetoSparseMatrix. - BREAKING:
matrix.Multiply(x, y)overwrites y (instead of update). - BREAKING: sparse matrix
PermuteColumnsreturns a new matrix (instead of update).
- BREAKING: use static
Createmethods (e.g.SparseLU.Create(...)) instead of constructors.
- Initial release of CSparse.NET (based on Tim Davis CSparse version 3.1.4)