diff options
author | Gael Guennebaud <g.gael@free.fr> | 2019-01-28 17:29:50 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2019-01-28 17:29:50 +0100 |
commit | f489f445193e21748fbfd304373eaf9b822691e3 (patch) | |
tree | 8cfbf8c8e7ce2663cde543c99a5d40379545f875 /test | |
parent | 803fa79767cfbf662be2f0bcd01a3422e65f11ef (diff) |
bug #1574: implement "sparse_matrix =,+=,-= diagonal_matrix" with smart insertion strategies of missing diagonal coeffs.
Diffstat (limited to 'test')
-rw-r--r-- | test/sparse_basic.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/test/sparse_basic.cpp b/test/sparse_basic.cpp index 30bba3f07..9e735b38b 100644 --- a/test/sparse_basic.cpp +++ b/test/sparse_basic.cpp @@ -546,7 +546,7 @@ template<typename SparseMatrixType> void sparse_basic(const SparseMatrixType& re { DenseVector d = DenseVector::Random(rows); DenseMatrix refMat2 = d.asDiagonal(); - SparseMatrixType m2(rows, rows); + SparseMatrixType m2; m2 = d.asDiagonal(); VERIFY_IS_APPROX(m2, refMat2); SparseMatrixType m3(d.asDiagonal()); @@ -554,6 +554,28 @@ template<typename SparseMatrixType> void sparse_basic(const SparseMatrixType& re refMat2 += d.asDiagonal(); m2 += d.asDiagonal(); VERIFY_IS_APPROX(m2, refMat2); + m2.setZero(); m2 += d.asDiagonal(); + refMat2.setZero(); refMat2 += d.asDiagonal(); + VERIFY_IS_APPROX(m2, refMat2); + m2.setZero(); m2 -= d.asDiagonal(); + refMat2.setZero(); refMat2 -= d.asDiagonal(); + VERIFY_IS_APPROX(m2, refMat2); + + initSparse<Scalar>(density, refMat2, m2); + m2.makeCompressed(); + m2 += d.asDiagonal(); + refMat2 += d.asDiagonal(); + VERIFY_IS_APPROX(m2, refMat2); + + initSparse<Scalar>(density, refMat2, m2); + m2.makeCompressed(); + VectorXi res(rows); + for(Index i=0; i<rows; ++i) + res(i) = internal::random<int>(0,3); + m2.reserve(res); + m2 -= d.asDiagonal(); + refMat2 -= d.asDiagonal(); + VERIFY_IS_APPROX(m2, refMat2); } // test conservative resize |