Commit Graph

127 Commits

Author SHA1 Message Date
Charles Schlosser 7b5d32b7c9 Sparse move 2024-03-27 17:44:50 +00:00
Antonio Sánchez 46e9cdb7fe Clang-format tests, examples, libraries, benchmarks, etc. 2023-12-05 21:22:55 +00:00
Charles Schlosser e8515f78ac Fix sparse triangular view iterator 2023-10-05 17:13:37 +00:00
Charles Schlosser 67a1e881d9 Sparse matrix column/row removal 2023-05-24 17:04:45 +00:00
Antonio Sánchez 3918768be1 Fix sparse iterator and tests. 2023-04-25 19:05:49 +00:00
Charles Schlosser 0d12fcc34e Insert from triplets 2023-04-12 20:01:48 +00:00
Rasmus Munk Larsen 07aaa62e6f Fix compiler warnings in tests. 2023-02-14 02:29:03 +00:00
Charles Schlosser 5a7ca681d5 Fix sparse insert 2023-01-20 21:32:32 +00:00
Charles Schlosser 81172cbdcb Overhaul Sparse Core 2023-01-07 22:09:42 +00:00
Charles Schlosser 44fe539150 add sparse sort inner vectors function 2022-12-01 19:28:56 +00:00
Erik Schultheis d271a7d545 reduce float warnings (comparisons and implicit conversions) 2022-01-26 18:16:19 +00:00
Erik Schultheis f33a31b823 removed EIGEN_HAS_CXX11_* and redundant EIGEN_COMP_CXXVER checks 2021-11-29 19:18:57 +00:00
Erik Schultheis 7e586635ba don't use deprecated MappedSparseMatrix 2021-11-19 15:58:04 +00:00
Antonio Sanchez 543e34ab9d Re-implement move assignments.
The original swap approach leads to potential undefined behavior (reading
uninitialized memory) and results in unnecessary copying of data for static
storage.

Here we pass down the move assignment to the underlying storage.  Static
storage does a one-way copy, dynamic storage does a swap.

Modified the tests to no longer read from the moved-from matrix/tensor,
since that can lead to UB. Added a test to ensure we do not access
uninitialized memory in a move.

Fixes: #2119
2021-03-10 16:55:20 +00:00
Antonio Sanchez 2468253c9a Define EIGEN_CPLUSPLUS and replace most __cplusplus checks.
The macro `__cplusplus` is not defined correctly in MSVC unless building
with the the `/Zc:__cplusplus` flag. Instead, it defines `_MSVC_LANG` to the
specified c++ standard version number.

Here we introduce `EIGEN_CPLUSPLUS` which will contain the c++ version
number both for MSVC and otherwise.  This simplifies checks for supported
features.

Also replaced most instances of standard version checking via `__cplusplus`
with the existing `EIGEN_COMP_CXXVER` macro for better clarity.

Fixes: #2170
2021-03-05 18:33:18 +00:00
Adam Shapiro 2ac0b78739 Fixed sparse conservativeResize() when both num cols and rows decreased.
The previous implementation caused a buffer overflow trying to calculate non-
zero counts for columns that no longer exist.
2021-02-23 21:32:39 +00:00
Gael Guennebaud 25424d91f6 Fix #1974: assertion when reserving an empty sparse matrix 2020-08-26 12:32:20 +02:00
Gael Guennebaud f489f44519 bug #1574: implement "sparse_matrix =,+=,-= diagonal_matrix" with smart insertion strategies of missing diagonal coeffs. 2019-01-28 17:29:50 +01:00
Gael Guennebaud cd25b538ab Fix noise in sparse_basic_3 (numerical cancellation) 2018-12-08 00:13:37 +01:00
Rasmus Munk Larsen 954b4ca9d0 Suppress compiler warning about unused global variable. 2018-10-22 13:48:56 -07:00
Gael Guennebaud 3a33db4de5 merge 2018-10-15 09:22:27 +02:00
Rasmus Munk Larsen 0ed811a9c1 Suppress unused variable compiler warning in sparse subtest 3. 2018-10-12 13:41:57 -07:00
Gael Guennebaud 8214cf1896 Make sparse_basic includable from sparse_extra, but disable it since sparse_basic(DynamicSparseMatrix) does not compile at all anyways 2018-10-11 10:27:23 +02:00
Gael Guennebaud eec0dfd688 bug #632: add specializations for res ?= dense +/- sparse and res ?= sparse +/- dense.
They are rewritten as two compound assignment to by-pass hybrid dense-sparse iterator.
2018-10-10 22:50:15 +02:00
Gael Guennebaud dff3a92d52 Remove usage of #if EIGEN_TEST_PART_XX in unit tests that does not require them (splitting can thus be avoided for them) 2018-07-17 15:52:58 +02:00
Gael Guennebaud 82f0ce2726 Get rid of EIGEN_TEST_FUNC, unit tests must now be declared with EIGEN_DECLARE_TEST(mytest) { /* code */ }.
This provide several advantages:
- more flexibility in designing unit tests
- unit tests can be glued to speed up compilation
- unit tests are compiled with same predefined macros, which is a requirement for zapcc
2018-07-17 14:46:15 +02:00
Gael Guennebaud 26a2c6fc16 fix unit test 2017-12-14 15:11:04 +01:00
Gael Guennebaud c86911ac73 bug #1384: fix evaluation of "sparse/scalar" that used the wrong evaluation path. 2017-01-30 13:38:24 +01:00
Gael Guennebaud 296d24be4d bug #1381: fix sparse.diagonal() used as a rvalue.
The problem was that is "sparse" is not const, then sparse.diagonal() must have the
LValueBit flag meaning that sparse.diagonal().coeff(i) must returns a const reference,
const Scalar&. However, sparse::coeff() cannot returns a reference for a non-existing
zero coefficient. The trick is to return a reference to a local member of
evaluator<SparseMatrix>.
2017-01-25 17:39:01 +01:00
Gael Guennebaud ba3f977946 bug #1376: add missing assertion on size mismatch with compound assignment operators (e.g., mat += mat.col(j)) 2017-01-23 22:06:08 +01:00
Gael Guennebaud 7136267461 Add missing .outer() member to iterators of evaluators of cwise sparse binary expression 2016-12-27 16:34:30 +01:00
Gael Guennebaud 11b492e993 bug #1358: fix compilation for sparse += sparse.selfadjointView(); 2016-12-14 17:53:47 +01:00
Gael Guennebaud 2e334f5da0 bug #426: move operator && and || to MatrixBase and SparseMatrixBase. 2016-11-14 18:47:02 +01:00
Gael Guennebaud eedb87f4ba Fix regression in SparseMatrix::ReverseInnerIterator 2016-11-14 14:05:53 +01:00
Gael Guennebaud 7e029d1d6e bug #1271: add SparseMatrix::coeffs() methods returning a 1D view of the non zero coefficients. 2016-08-29 12:06:37 +02:00
Gael Guennebaud 757971e7ea bug #1258: fix compilation of Map<SparseMatrix>::coeffRef 2016-07-26 09:40:19 +02:00
Gael Guennebaud 2c1b56f4c1 bug #1238: fix SparseMatrix::sum() overload for un-compressed mode. 2016-05-31 10:56:53 +02:00
Gael Guennebaud 8456bbbadb bug #1224: fix regression in (dense*dense).sparseView() by specializing evaluator<SparseView<Product>> for sparse products only. 2016-05-18 16:53:28 +02:00
Christoph Hertzberg 7268b10203 Split unit test 2016-05-11 19:41:53 +02:00
Christoph Hertzberg dacb469bc9 Enable and fix -Wdouble-conversion warnings 2016-05-05 13:35:45 +02:00
Gael Guennebaud 0a537cb2d8 bug #901: fix triangular-view with unit diagonal of sparse rectangular matrices. 2016-02-12 15:58:31 +01:00
Gael Guennebaud ec469700dc bug #557: make InnerIterator of sparse storage types more versatile by adding default-ctor, copy-ctor/assignment 2016-02-01 15:04:33 +01:00
Gael Guennebaud 15084cf1ac bug #632: add support for "dense +/- sparse" operations. The current implementation is based on SparseView to make the dense subexpression compatible with the sparse one. 2016-01-29 22:09:45 +01:00
Gael Guennebaud bfd6ee64f3 bug #1105: fix default preallocation when moving from compressed to uncompressed mode 2015-11-06 15:05:37 +01:00
Gael Guennebaud 902750826b Add support for dense.cwiseProduct(sparse)
This also fixes a regression regarding (dense*sparse).diagonal()
2015-11-04 17:42:07 +01:00
Gael Guennebaud f6b1deebab Fix compilation of sparse-triangular to dense assignment 2015-11-04 17:02:32 +01:00
Gael Guennebaud 73f692d16b Fix ambiguous instantiation 2015-10-27 11:01:37 +01:00
Gael Guennebaud 8a211bb1a9 bug #1088: fix setIdenity for non-compressed sparse-matrix 2015-10-25 22:01:58 +01:00
Gael Guennebaud b4c79ee1d3 Update custom setFromTripplets API to allow passing a functor object, and add a collapseDuplicates method to cleanup the API. Also add respective unit test 2015-10-13 11:30:41 +02:00
Gael Guennebaud a44d91a0b2 extend unit test for SparseMatrix::prune 2015-10-13 10:53:38 +02:00