aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/sparse.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2008-10-04 14:25:00 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2008-10-04 14:25:00 +0000
commita930dfb2295a62ab42bbfb3319ad1732c0d4f7f6 (patch)
treeef04cb821066cbb68f85b04ed059a6404fe008b5 /test/sparse.cpp
parent98d3c0a413b865b93ceea858f673767826323783 (diff)
extend sparse unit tests with transpose and matrix product
Diffstat (limited to 'test/sparse.cpp')
-rw-r--r--test/sparse.cpp30
1 files changed, 28 insertions, 2 deletions
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
}