Commit Graph

2135 Commits

Author SHA1 Message Date
Andreas Longva d6b4f1ac2f Add CscCholesky::factor_numerical 2021-01-26 10:11:24 +01:00
Andreas Longva cd9c3baead Clean up CscCholesky 2021-01-26 10:11:24 +01:00
Andreas Longva 4b395523dd Fix issue with UninitVec and zero-sized types 2021-01-26 10:11:24 +01:00
Andreas Longva ef3477f411 Remove Zero bound for transpose and impl SparsityPattern::transpose 2021-01-26 10:11:24 +01:00
Andreas Longva 3b1303d1e0 Implement lower/upper triangular solve for CSC matrices 2021-01-26 10:11:24 +01:00
Andreas Longva c988ebb4e7 Fail test compilation if compare feature is missing 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 84557d8046 Implement matrixcompare traits for sparse matrices 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 6e34c23d05 Implement Csr/CscMatrix::identity 2021-01-26 10:11:24 +01:00
Andreas Longva ea6c1451b4 Rename Op::unwrap to Op::into_inner 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 6a1d12705f Remove old .get() API for CscMatrix in favor of entry API
This essentially makes the API of CscMatrix analogous to
that of CsrMatrix.
2021-01-26 10:11:24 +01:00
Andreas Longva e261e7c388 Remove use of unsafe for CsLaneIterMut 2021-01-26 10:11:24 +01:00
Andreas Longva b59c4a3216 Refactor most of Csr/CscMatrix logic into helper type CsMatrix
Still need to update CSC API so that it mirrors CsrMatrix
in terms of get_entry and so on.
2021-01-26 10:11:24 +01:00
Andreas Longva 8983027b39 Minor refactoring for sp* ops 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 061024ab1f Improve Ops API 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 921686c490 Rename CsrMatrix::get(_mut) to get_entry(_mut) and change semantics 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 67aba82675 Update nalgebra version for nalgebra-sparse 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 082416e3ec Make SparseFormatErrorKind #[non_exhaustive] 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