diff options
author | Christoph Hertzberg <chtz@informatik.uni-bremen.de> | 2019-12-20 18:10:22 +0100 |
---|---|---|
committer | Christoph Hertzberg <chtz@informatik.uni-bremen.de> | 2019-12-20 18:10:22 +0100 |
commit | 1e9664b14737d016fabbdb72327aeda6a06bf623 (patch) | |
tree | 319dbbe12abf519c8962ab6fcb4d60d0b58662c9 /unsupported/test | |
parent | d86544d6549078997f5986015f5a86c493cd5ee3 (diff) |
Bug #1796: Make matrix squareroot usable for Map and Ref types
Diffstat (limited to 'unsupported/test')
-rw-r--r-- | unsupported/test/matrix_function.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/unsupported/test/matrix_function.cpp b/unsupported/test/matrix_function.cpp index 2049b8ba0..6d753737d 100644 --- a/unsupported/test/matrix_function.cpp +++ b/unsupported/test/matrix_function.cpp @@ -177,6 +177,39 @@ void testMatrixType(const MatrixType& m) } } +template<typename MatrixType> +void testMapRef(const MatrixType& A) +{ + // Test if passing Ref and Map objects is possible + // (Regression test for Bug #1796) + Index size = A.rows(); + MatrixType X; X.setRandom(size, size); + MatrixType Y(size,size); + Ref< MatrixType> R(Y); + Ref<const MatrixType> Rc(X); + Map< MatrixType> M(Y.data(), size, size); + Map<const MatrixType> Mc(X.data(), size, size); + + X = X*X; // make sure sqrt is possible + Y = X.sqrt(); + R = Rc.sqrt(); + M = Mc.sqrt(); + Y = X.exp(); + R = Rc.exp(); + M = Mc.exp(); + X = Y; // make sure log is possible + Y = X.log(); + R = Rc.log(); + M = Mc.log(); + + Y = X.cos() + Rc.cos() + Mc.cos(); + Y = X.sin() + Rc.sin() + Mc.sin(); + + Y = X.cosh() + Rc.cosh() + Mc.cosh(); + Y = X.sinh() + Rc.sinh() + Mc.sinh(); +} + + EIGEN_DECLARE_TEST(matrix_function) { CALL_SUBTEST_1(testMatrixType(Matrix<float,1,1>())); @@ -186,4 +219,9 @@ EIGEN_DECLARE_TEST(matrix_function) CALL_SUBTEST_5(testMatrixType(Matrix<double,5,5,RowMajor>())); CALL_SUBTEST_6(testMatrixType(Matrix4cd())); CALL_SUBTEST_7(testMatrixType(MatrixXd(13,13))); + + CALL_SUBTEST_1(testMapRef(Matrix<float,1,1>())); + CALL_SUBTEST_2(testMapRef(Matrix3cf())); + CALL_SUBTEST_3(testMapRef(MatrixXf(8,8))); + CALL_SUBTEST_7(testMapRef(MatrixXd(13,13))); } |