aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/product_symm.cpp
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-03-21 11:28:03 -0400
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-03-21 11:28:03 -0400
commit92da574ec291b32b6f0b645a1d82045eb280437a (patch)
tree658a0edd30d92937ae59c536cdba56feedadb521 /test/product_symm.cpp
parent547269da3560518807efe902bce07d22db03e039 (diff)
* allow matrix dimensions to be 0 (also at compile time) and provide a specialization
of ei_matrix_array for size 0 * adapt many xprs to have the right storage order, now that it matters * add static assert on expressions to check that vector xprs have the righ storage order * adapt ei_plain_matrix_type_(column|row)_major * implement assignment of selfadjointview to matrix (was before failing to compile) and add nestedExpression() methods * expand product_symm test * in ei_gemv_selector, use the PlainObject type instead of a custom Matrix<...> type * fix VectorBlock and Block mistakes
Diffstat (limited to 'test/product_symm.cpp')
-rw-r--r--test/product_symm.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/test/product_symm.cpp b/test/product_symm.cpp
index 4ff1735d6..08e0a6070 100644
--- a/test/product_symm.cpp
+++ b/test/product_symm.cpp
@@ -48,13 +48,14 @@ template<typename Scalar, int Size, int OtherSize> void symm(int size = Size, in
typedef Matrix<Scalar, Size, Size> MatrixType;
typedef Matrix<Scalar, Size, OtherSize> Rhs1;
typedef Matrix<Scalar, OtherSize, Size> Rhs2;
- typedef Matrix<Scalar, Size, OtherSize,RowMajor> Rhs3;
+ enum { order = OtherSize==1 ? 0 : RowMajor };
+ typedef Matrix<Scalar, Size, OtherSize,order> Rhs3;
int rows = size;
int cols = size;
MatrixType m1 = MatrixType::Random(rows, cols),
- m2 = MatrixType::Random(rows, cols);
+ m2 = MatrixType::Random(rows, cols), m3;
m1 = (m1+m1.adjoint()).eval();
@@ -66,10 +67,14 @@ template<typename Scalar, int Size, int OtherSize> void symm(int size = Size, in
s2 = ei_random<Scalar>();
m2 = m1.template triangularView<Lower>();
+ m3 = m2.template selfadjointView<Lower>();
+ VERIFY_IS_EQUAL(m1, m3);
VERIFY_IS_APPROX(rhs12 = (s1*m2).template selfadjointView<Lower>() * (s2*rhs1),
rhs13 = (s1*m1) * (s2*rhs1));
m2 = m1.template triangularView<Upper>(); rhs12.setRandom(); rhs13 = rhs12;
+ m3 = m2.template selfadjointView<Upper>();
+ VERIFY_IS_EQUAL(m1, m3);
VERIFY_IS_APPROX(rhs12 += (s1*m2).template selfadjointView<Upper>() * (s2*rhs1),
rhs13 += (s1*m1) * (s2*rhs1));