diff options
author | 2008-10-04 14:25:00 +0000 | |
---|---|---|
committer | 2008-10-04 14:25:00 +0000 | |
commit | a930dfb2295a62ab42bbfb3319ad1732c0d4f7f6 (patch) | |
tree | ef04cb821066cbb68f85b04ed059a6404fe008b5 /test | |
parent | 98d3c0a413b865b93ceea858f673767826323783 (diff) |
extend sparse unit tests with transpose and matrix product
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 2 | ||||
-rw-r--r-- | test/sparse.cpp | 30 |
2 files changed, 29 insertions, 3 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 4a58aa8f7..5f53d475e 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -122,6 +122,6 @@ EI_ADD_TEST(geometry) EI_ADD_TEST(hyperplane) EI_ADD_TEST(parametrizedline) EI_ADD_TEST(regression) -EI_ADD_TEST(sparse) +EI_ADD_TEST(sparse ${EI_OFLAG}) ENDIF(BUILD_TESTS) diff --git a/test/sparse.cpp b/test/sparse.cpp index 3095297ce..040f889cb 100644 --- a/test/sparse.cpp +++ b/test/sparse.cpp @@ -155,7 +155,7 @@ template<typename Scalar> void sparse(int rows, int cols) // } // } // VERIFY_IS_APPROX(m, refMat); - + // random setter { m.setZero(); @@ -172,6 +172,32 @@ template<typename Scalar> void sparse(int rows, int cols) } VERIFY_IS_APPROX(m, refMat); + // test transpose + { + DenseMatrix refMat2 = DenseMatrix::Zero(rows, rows); + SparseMatrix<Scalar> m2(rows, rows); + initSparse<Scalar>(density, refMat2, m2); + VERIFY_IS_APPROX(m2.transpose().eval(), refMat2.transpose().eval()); + VERIFY_IS_APPROX(m2.transpose(), refMat2.transpose()); + } + + // test matrix product + { + DenseMatrix refMat2 = DenseMatrix::Zero(rows, rows); + DenseMatrix refMat3 = DenseMatrix::Zero(rows, rows); + DenseMatrix refMat4 = DenseMatrix::Zero(rows, rows); + SparseMatrix<Scalar> m2(rows, rows); + SparseMatrix<Scalar> m3(rows, rows); + SparseMatrix<Scalar> m4(rows, rows); + initSparse<Scalar>(density, refMat2, m2); + initSparse<Scalar>(density, refMat3, m3); + initSparse<Scalar>(density, refMat4, m4); + VERIFY_IS_APPROX(m4=m2*m3, refMat4=refMat2*refMat3); + VERIFY_IS_APPROX(m4=m2.transpose()*m3, refMat4=refMat2.transpose()*refMat3); + VERIFY_IS_APPROX(m4=m2.transpose()*m3.transpose(), refMat4=refMat2.transpose()*refMat3.transpose()); + VERIFY_IS_APPROX(m4=m2*m3.transpose(), refMat4=refMat2*refMat3.transpose()); + } + // test triangular solver { DenseVector vec2 = vec1, vec3 = vec1; @@ -187,7 +213,7 @@ template<typename Scalar> void sparse(int rows, int cols) initSparse<Scalar>(density, refMat2, m2, ForceNonZeroDiag|MakeUpperTriangular, &zeroCoords, &nonzeroCoords); VERIFY_IS_APPROX(refMat2.template marked<Upper>().solveTriangular(vec2), m2.template marked<Upper>().solveTriangular(vec3)); - + // TODO test row major } |