Commit Graph

87 Commits

Author SHA1 Message Date
Andreas Longva bda8207ffd Rename to_value to into_value (clippy suggestion) 2021-01-26 10:11:24 +01:00
Andreas Longva 7bef417f99 Use nalgebra/proptest-support instead of /proptest in nalgebra-sparse 2021-01-26 10:11:24 +01:00
Andreas Longva e7975ce09a Rebase and update nalgebra version for nalgebra-sparse 2021-01-26 10:11:24 +01:00
Andreas Longva 7473d54d74 rustfmt 2021-01-26 10:11:24 +01:00
Andreas Longva 795d818ae5 Improve documentation of errors and panics 2021-01-26 10:11:24 +01:00
Andreas Longva 5d5ed5be0b Various minor doc and comment fixes 2021-01-26 10:11:24 +01:00
Andreas Longva ccf1f18991 Merge SolveError into OperationError 2021-01-26 10:11:24 +01:00
Andreas Longva 7b6333e9d1 Rename some Csr/Csc/SparsityPattern methods 2021-01-26 10:11:24 +01:00
Andreas Longva cf1bd284f1 Improve ops docs 2021-01-26 10:11:24 +01:00
Andreas Longva f98e64aafd Improve docs for SparsityPattern 2021-01-26 10:11:24 +01:00
Andreas Longva cf220c9d2b Improve docs for CooMatrix 2021-01-26 10:11:24 +01:00
Andreas Longva e8a35ddb62 CSC docs and improved CSR docs 2021-01-26 10:11:24 +01:00
Andreas Longva afcad0ccc8 Documentation for CsrMatrix 2021-01-26 10:11:24 +01:00
Andreas Longva 0bee9be6c7 Extend CSC/CSR * Dense to work for combinations of ref and owned 2021-01-26 10:11:24 +01:00
Andreas Longva 74cd0283eb Partial top-level documentation 2021-01-26 10:11:24 +01:00
Andreas Longva 1fa0de92ae Preserve column dim type in CSR * Dense
This is necessary so that CSR * Vector == Vector (before it would
also yield a DMatrix).
2021-01-26 10:11:24 +01:00
Andreas Longva 15c4382fa9 Docs for most items in nalgebra-sparse 2021-01-26 10:11:24 +01:00
Andreas Longva 7a083d50f7 Increase tolerance to ensure tests pass
It's possible that some particularly bad inputs cause
severe loss of significance in the triangular solves.
This is exacerbated by the fact that the way we test
the (residual) error is also prone to loss of significance,
so that the error measure itself is problematic.

We could maybe improve this in the future by using arbitrary-
precision arithmetic to remove some sources of error and testing
against appropriate bounds.
2021-01-26 10:11:24 +01:00
Andreas Longva 31c911d4fb Change proptest strategies to use DimRange 2021-01-26 10:11:24 +01:00
Andreas Longva 9cd1540496 Improve and test proptest generators
Due to a bug in proptest, we were required to pull in and modify
parts of proptest::strategy::Shuffle. Once the below PR has been merged
and released on crates.io, we can remove this code.

https://github.com/AltSysrq/proptest/pull/217
2021-01-26 10:11:24 +01:00
Andreas Longva 3eab45d81b Replace spmm_pattern with spmm_{csr/csc}_pattern 2021-01-26 10:11:24 +01:00
Andreas Longva cb0f9a5190 Add Csr/CscMatrix::pattern_and_values_mut() 2021-01-26 10:11:24 +01:00
Andreas Longva c43a2b1679 Impl Csr/CscMatrix::into_pattern_and_values 2021-01-26 10:11:24 +01:00
Andreas Longva e655fed4fa Replace Arc<SparsityPattern> with SparsityPattern
After much deliberation, I have come to the conclusion that the
benefits do not really outweigh the added complexity. Even though
the added complexity is relatively minor, it makes it somewhat
more complicated to inter-op with other sparse linear algebra
libraries in the future.
2021-01-26 10:11:24 +01:00
Andreas Longva 9b46a43c7f Add proptest regressions 2021-01-26 10:11:24 +01:00
Andreas Longva fc0c22bf78 Add CscCholesky::solve and ::solve_mut 2021-01-26 10:11:24 +01:00
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