diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2017-03-25 14:17:07 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2017-03-25 14:17:07 +0100 |
commit | 35f7829af10c61e33dd2e2a7a015058e11a11ea0 (patch) | |
tree | 7135010dcf8fd0a49f3020d52112709bcb883bd6 /eigen/test/product_mmtr.cpp | |
parent | 6e8724193e40a932faf9064b664b529e7301c578 (diff) |
update
Diffstat (limited to 'eigen/test/product_mmtr.cpp')
-rw-r--r-- | eigen/test/product_mmtr.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/eigen/test/product_mmtr.cpp b/eigen/test/product_mmtr.cpp index aeba009..f6e4bb1 100644 --- a/eigen/test/product_mmtr.cpp +++ b/eigen/test/product_mmtr.cpp @@ -13,7 +13,8 @@ ref2 = ref1 = DEST; \ DEST.template triangularView<TRI>() OP; \ ref1 OP; \ - ref2.template triangularView<TRI>() = ref1; \ + ref2.template triangularView<TRI>() \ + = ref1.template triangularView<TRI>(); \ VERIFY_IS_APPROX(DEST,ref2); \ } @@ -32,6 +33,8 @@ template<typename Scalar> void mmtr(int size) MatrixColMaj osc(othersize,size); osc.setRandom(); MatrixRowMaj sor(size,othersize); sor.setRandom(); MatrixRowMaj osr(othersize,size); osr.setRandom(); + MatrixColMaj sqc(size,size); sqc.setRandom(); + MatrixRowMaj sqr(size,size); sqr.setRandom(); Scalar s = internal::random<Scalar>(); @@ -49,6 +52,29 @@ template<typename Scalar> void mmtr(int size) CHECK_MMTR(matc, Upper, -= s*(osc.transpose()*osc.conjugate())); CHECK_MMTR(matr, Lower, -= s*soc*soc.adjoint()); CHECK_MMTR(matr, Upper, -= soc*(s*soc.adjoint())); + + CHECK_MMTR(matc, Lower, -= s*sqr*sqc.template triangularView<Upper>()); + CHECK_MMTR(matc, Upper, = s*sqc*sqr.template triangularView<Upper>()); + CHECK_MMTR(matc, Lower, += s*sqr*sqc.template triangularView<Lower>()); + CHECK_MMTR(matc, Upper, = s*sqc*sqc.template triangularView<Lower>()); + + CHECK_MMTR(matc, Lower, = (s*sqr).template triangularView<Upper>()*sqc); + CHECK_MMTR(matc, Upper, -= (s*sqc).template triangularView<Upper>()*sqc); + CHECK_MMTR(matc, Lower, = (s*sqr).template triangularView<Lower>()*sqc); + CHECK_MMTR(matc, Upper, += (s*sqc).template triangularView<Lower>()*sqc); + + // check aliasing + ref2 = ref1 = matc; + ref1 = sqc.adjoint() * matc * sqc; + ref2.template triangularView<Upper>() = ref1.template triangularView<Upper>(); + matc.template triangularView<Upper>() = sqc.adjoint() * matc * sqc; + VERIFY_IS_APPROX(matc, ref2); + + ref2 = ref1 = matc; + ref1 = sqc * matc * sqc.adjoint(); + ref2.template triangularView<Lower>() = ref1.template triangularView<Lower>(); + matc.template triangularView<Lower>() = sqc * matc * sqc.adjoint(); + VERIFY_IS_APPROX(matc, ref2); } void test_product_mmtr() |