diff options
author | Gael Guennebaud <g.gael@free.fr> | 2009-07-14 23:27:37 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2009-07-14 23:27:37 +0200 |
commit | 587029a612df2a98a545702e90dc40feb7a62d3e (patch) | |
tree | 742dd8419c31d6bb665dd7a7efd95df5ddbf98bf /test | |
parent | 8120a5cecd982ed182d6e18b072fb9a95dc925dc (diff) |
started an implementation of BandMatrix: at least the read/write access
to the main/sub/super diagonals seems to work well.
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | test/bandmatrix.cpp | 61 |
2 files changed, 62 insertions, 0 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 886731d45..5e1adcbf4 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -111,6 +111,7 @@ ei_add_test(array_replicate) ei_add_test(array_reverse) ei_add_test(triangular) ei_add_test(product_triangular) +ei_add_test(bandmatrix) ei_add_test(cholesky " " "${GSL_LIBRARIES}") ei_add_test(lu ${EI_OFLAG}) ei_add_test(determinant) diff --git a/test/bandmatrix.cpp b/test/bandmatrix.cpp new file mode 100644 index 000000000..96ccda2cf --- /dev/null +++ b/test/bandmatrix.cpp @@ -0,0 +1,61 @@ +// This file is triangularView of Eigen, a lightweight C++ template library +// for linear algebra. +// +// Copyright (C) 2008-2009 Gael Guennebaud <gael.guennebaud@gmail.com> +// +// Eigen is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 3 of the License, or (at your option) any later version. +// +// Alternatively, you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 2 of +// the License, or (at your option) any later version. +// +// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License and a copy of the GNU General Public License along with +// Eigen. If not, see <http://www.gnu.org/licenses/>. + +#include "main.h" + +template<typename MatrixType> void bandmatrix(MatrixType& m) +{ + typedef typename MatrixType::Scalar Scalar; + typedef typename NumTraits<Scalar>::Real RealScalar; + typedef Matrix<Scalar,Dynamic,Dynamic> DenseMatrixType; + + int size = m.rows(); + + DenseMatrixType dm1(size,size); + dm1.setZero(); + + m.diagonal().setConstant(123); + dm1.diagonal().setConstant(123); + for (int i=1; i<=m.supers();++i) + { + m.diagonal(i).setConstant(i); + dm1.diagonal(i).setConstant(i); + } + for (int i=1; i<=m.subs();++i) + { + m.diagonal(-i).setConstant(-i); + dm1.diagonal(-i).setConstant(-i); + } + std::cerr << m.toDense() << "\n\n" << dm1 << "\n\n"; + VERIFY_IS_APPROX(dm1,m.toDense()); + +} + +void test_bandmatrix() +{ + for(int i = 0; i < g_repeat ; i++) { + BandMatrix<float,Dynamic,Dynamic,Dynamic> m(6,3,2); + CALL_SUBTEST( bandmatrix(m) ); + } +} |