Andreas Longva
3b1303d1e0
Implement lower/upper triangular solve for CSC matrices
2021-01-26 10:11:24 +01:00
Andreas Longva
5869f784e5
Implement CsrMatrix/CscMatrix::filter and associated helpers
...
Includes ::lower_triangle(), ::upper_triangle() and
::diagonal_matrix().
2021-01-26 10:11:24 +01:00
Andreas Longva
3453577a16
Use matrixcompare 0.2 with prop_assert_matrix_eq in Cholesky test
2021-01-26 10:11:24 +01:00
Andreas Longva
aad2216c56
Initial port from nalgebra::CsCholesky factorization to CscCholesky
2021-01-26 10:11:24 +01:00
Andreas Longva
885480a634
Implement CSR/CSC * Dense std operations
2021-01-26 10:11:24 +01:00
Andreas Longva
b7a7f967b8
Implement Neg, Div, DivAssign for Csr/CscMatrix
2021-01-26 10:11:24 +01:00
Andreas Longva
0b4356eb0e
Implement Sub for Csr/CscMatrix
2021-01-26 10:11:24 +01:00
Andreas Longva
7aeb663165
Implement matrix-scalar multiplication
2021-01-26 10:11:24 +01:00
Andreas Longva
dbdf5567fc
Implement arithmetic operations for CSC matrices
2021-01-26 10:11:24 +01:00
Andreas Longva
66cbd26702
Add prealloc suffix to spmm_csr and spadd_csr
...
The suffix is intended to communicate that these methods
assume `preallocated` storage, i.e. they try to store the
result in a matrix which already has the correct sparsity
pattern for the operation.
2021-01-26 10:11:24 +01:00
Andreas Longva
4af3fcbdd3
Reorder parameters in ops to intuitive order
2021-01-26 10:11:24 +01:00
Andreas Longva
fe8592fde1
Refactor ops to use new Op type instead of separate Transpose flag
2021-01-26 10:11:24 +01:00
Andreas Longva
c6a8fcdee2
Simplify spadd_pattern API and name
2021-01-26 10:11:24 +01:00
Andreas Longva
6a100c085a
Add proptest regressions
2021-01-26 10:11:24 +01:00
Andreas Longva
b25848838b
Implement CSR-CSR matrix multiplication
2021-01-26 10:11:24 +01:00
Andreas Longva
d9cfe5cb3e
Improve dimension assertions for spadd_csr
2021-01-26 10:11:24 +01:00
Andreas Longva
2d534a6133
Implement spmm_csr
2021-01-26 10:11:24 +01:00
Andreas Longva
9db17f00e7
Implement spmm_pattern
2021-01-26 10:11:24 +01:00
Andreas Longva
c4285d9fb3
remove spmv_coo
2021-01-26 10:11:24 +01:00
Andreas Longva
41941e62c8
Implement CSR-CSR addition
2021-01-26 10:11:24 +01:00
Andreas Longva
830df6d07b
Implement Csr/CscMatrix::transpose()
2021-01-26 10:11:24 +01:00
Andreas Longva
8b7b836a37
Make CsrMatrix/CscMatrix::pattern() return reference
2021-01-26 10:11:24 +01:00
Andreas Longva
4420237ede
Implement spadd_build_pattern
2021-01-26 10:11:24 +01:00
Andreas Longva
7c68950614
Simplify transposition API in spmm_csr_dense
2021-01-26 10:11:24 +01:00
Andreas Longva
1ae03d9ebb
Implement spmm_csr_dense
2021-01-26 10:11:24 +01:00
Andreas Longva
95ee65fa8e
Implement remaining conversions (missing docs)
2021-01-26 10:11:24 +01:00
Andreas Longva
6083d24dd6
Add csr, csc, sparsity_pattern proptest generators (untested)
2021-01-26 10:11:24 +01:00
Andreas Longva
41ce9a23df
Remove CooMatrix::to_dense() and `Scalar` trait bound, add ::nnz()
2021-01-26 10:11:24 +01:00
Andreas Longva
f20e764edc
nalgebra-sparse: Move slow tests and imports into 'slow' child module
...
This way it's easier to prevent accidental unused imports when
running tests without the slow-tests feature.
2021-01-26 10:11:24 +01:00
Andreas Longva
54329146c9
Initial COO <-> Dense conversion routines
2021-01-26 10:11:24 +01:00
Andreas Longva
7260f05b07
Improved CooMatrix proptest strategies
2021-01-26 10:11:24 +01:00
Andreas Longva
46442d6060
Initial basic proptest support for CooMatrix (missing tests)
2021-01-26 10:11:24 +01:00
Andreas Longva
ec339f9108
Implement CSC matrix basic API
...
The CSC matrix API mirrors the CSR matrix API. However, there
are subtle differences throughout (both in the available
methods and the implementation) that I believe makes any attempt
to avoid the duplicate effort futile.
2021-01-26 10:11:24 +01:00
Andreas Longva
4cd47327c9
Test that CSR::disassemble avoids cloning when possible
2021-01-26 10:11:24 +01:00
Andreas Longva
df1ef991f3
Test SparsityPattern and CSR try_* constructors
2021-01-26 10:11:24 +01:00
Andreas Longva
a15e78a6b7
Put COO, CSR, SparsityPattern and related types in their own modules
...
This mimics how std does it, e.g. std::vec::Vec. This avoids potential
problems down the road, where adding more types might clutter the
API interface and generated documentation.
2021-01-26 10:11:24 +01:00
Andreas Longva
7a5f8ef1ea
Redesign error handling for CSR and SparsityPattern construction
...
SparsityPattern's constructor now returns a fine-grained error
enum that enumerates possible errors. We use this to build a more
user-friendly error when constructing CSR matrices.
We also overhauled the main SparseFormatError error type by
making it a struct containing a *Kind type and an underlying error
that contains the message.
2021-01-26 10:11:24 +01:00
Andreas Longva
b0ffd55962
Initial CSR and SparsityPattern impls (WIP)
2021-01-26 10:11:24 +01:00
Andreas Longva
1dbccfeb7c
Initial COO implementation
2021-01-26 10:11:24 +01:00