Fabian Löschner
fe70a80e41
Partial revert "Use custom serde errors, make all sparse errs lowercase"
2022-01-11 10:35:07 +01:00
Fabian Löschner
647455dadd
Move serialization code to submodules
2022-01-11 10:35:07 +01:00
Fabian Löschner
837ded932e
Replace usage of Cow with generic type
2022-01-11 10:35:07 +01:00
Fabian Löschner
9b87fa4ffa
Add cfg attribute to Cow imports
2022-01-11 10:35:07 +01:00
Fabian Löschner
a8fa7f71c0
Unify separate (de)serialization helper structs by using Cow<'a, [T]>
2022-01-11 10:35:07 +01:00
Fabian Loeschner
7e67d920a7
Use custom serde errors, make all sparse errs lowercase w/o punctuation
2022-01-11 10:35:07 +01:00
Fabian Loeschner
e9b7718292
Fix panic in SparsityPattern::try_from_* if major index is out of bounds
2022-01-11 10:35:07 +01:00
Fabian Loeschner
e2c33b48ac
Simplify Deserialize bound
2022-01-11 10:35:07 +01:00
Fabian Loeschner
2a3e657b56
Rename nrows/ncols args for try_from_*_data functions for consistency
2022-01-11 10:35:07 +01:00
Fabian Loeschner
40d8a904a3
Implement Serialize, Deserialize for Csc, Coo; move helper out of impls
2022-01-11 10:35:07 +01:00
Fabian Loeschner
18b694dad2
Move serialization helper structs into trait impls
2022-01-11 10:35:07 +01:00
Fabian Löschner
f9aca24b15
Implement Serialize and Deserialize for CsrMatrix
2022-01-11 10:35:07 +01:00
Anton
89416baace
Bring apply permutation function back to serial.rs
2021-10-20 20:28:38 +02:00
Anton
752d1f300d
Permute values without unnecessary allocation
2021-10-20 01:50:42 +02:00
Anton
4b41be75b0
Add tests for some csr matrix related failure cases
2021-10-14 23:18:34 +02:00
Anton
4a97989738
Improve checking requirements for sorting column indices
2021-10-11 23:01:12 +02:00
Anton
469765a4e5
Apply permutation
2021-10-08 00:36:40 +02:00
Anton
a2a55cddca
Check first and last offsets before sorting column indices
2021-10-05 00:07:04 +02:00
Anton
9e85c9e2b6
CSR/CSC: Provide constructor for unsorted but otherwise valid data
2021-10-03 14:59:28 +02:00
Rémi Lauzier
c35f792b4f
Fix some warnings
2021-07-27 19:24:55 -04:00
Violeta Hernández
6e96c28ad9
Trivial doc comment improvements
2021-07-06 21:05:25 -05:00
Malte Tammena
38e9a5da33
Annotate get_mut
/slice
-like functions with #[must_use]
2021-06-07 17:15:36 +02:00
Malte Tammena
9fb963017f
Simplify default #[must_use]
annotation
2021-06-07 16:34:03 +02:00
Malte Tammena
42a2c74571
Finish initial must_use annotations
2021-06-06 15:28:37 +02:00
Crozet Sébastien
c6f7cae326
Move COO, CSC, CSR constructor at the top of the impls.
2021-02-25 11:11:29 +01:00
Andreas Longva
2d11b90149
Address review concerns: doc link, Csr/CScMatrix::pattern docs
2021-02-01 08:41:37 +01:00
Andreas Longva
7473d54d74
rustfmt
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
7b6333e9d1
Rename some Csr/Csc/SparsityPattern methods
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
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
ef3477f411
Remove Zero bound for transpose and impl SparsityPattern::transpose
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
6e34c23d05
Implement Csr/CscMatrix::identity
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
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
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
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
df1ef991f3
Test SparsityPattern and CSR try_* constructors
2021-01-26 10:11:24 +01:00
Andreas Longva
ff435110b9
Implement CSR::disassemble and SparsityPattern::disassemble
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
b1199da206
Verify data validity in try_* constructors
...
We can easily create the CSR and CSC constructors by using the
SparsityPattern constructors. However, one lingering problem
is giving meaningful error messages. When forwarding error messages
from the SparsityPattern constructor, the error messages must
be written in terms of "major" or "minor" dimensions, and using
general terms like "lanes", instead of "rows" and "columns".
When forwarding these messages up to CSR or CSC constructors,
they are not directly meaningful to an end user. We should find
a better solution to this problem, so that end users get
more meaningful messages.
2021-01-26 10:11:24 +01:00
Andreas Longva
7f5b702a49
CSR row access and iterators
2021-01-26 10:11:24 +01:00
Andreas Longva
41425ae52c
Use inline instead of inline(always)
2021-01-26 10:11:24 +01:00