diff options
author | Gael Guennebaud <g.gael@free.fr> | 2008-03-05 13:18:19 +0000 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2008-03-05 13:18:19 +0000 |
commit | 8e0d548039f260db2eacb1e54e62e1acdbd4dd09 (patch) | |
tree | 24c0b8656e51fbfcbc80e5b73583e55832796eeb /test/adjoint.cpp | |
parent | 861c6f4c9b4ceff1ad734e22f4615b260b1d9c45 (diff) |
* Fix a compilation issue with large fixed-size matrices: the unrollers were always instanciated.
* the unrolling limits are configurable at compile time.
Diffstat (limited to 'test/adjoint.cpp')
-rw-r--r-- | test/adjoint.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/test/adjoint.cpp b/test/adjoint.cpp index 7218c43fa..96e3cf6f7 100644 --- a/test/adjoint.cpp +++ b/test/adjoint.cpp @@ -5,12 +5,12 @@ // // 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 +// 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 +// 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 @@ -18,7 +18,7 @@ // 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 +// 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/>. @@ -36,7 +36,7 @@ template<typename MatrixType> void adjoint(const MatrixType& m) typedef Matrix<Scalar, MatrixType::Traits::RowsAtCompileTime, 1> VectorType; int rows = m.rows(); int cols = m.cols(); - + MatrixType m1 = MatrixType::random(rows, cols), m2 = MatrixType::random(rows, cols), m3(rows, cols), @@ -52,18 +52,18 @@ template<typename MatrixType> void adjoint(const MatrixType& m) Scalar s1 = ei_random<Scalar>(), s2 = ei_random<Scalar>(); - + // check involutivity of adjoint, transpose, conjugate VERIFY_IS_APPROX(m1.transpose().transpose(), m1); VERIFY_IS_APPROX(m1.conjugate().conjugate(), m1); VERIFY_IS_APPROX(m1.adjoint().adjoint(), m1); - + // check basic compatibility of adjoint, transpose, conjugate VERIFY_IS_APPROX(m1.transpose().conjugate().adjoint(), m1); VERIFY_IS_APPROX(m1.adjoint().conjugate().transpose(), m1); if(!NumTraits<Scalar>::IsComplex) VERIFY_IS_APPROX(m1.adjoint().transpose(), m1); - + // check multiplicative behavior VERIFY_IS_APPROX((m1.transpose() * m2).transpose(), m2.transpose() * m1); VERIFY_IS_APPROX((m1.adjoint() * m2).adjoint(), m2.adjoint() * m1); @@ -71,7 +71,7 @@ template<typename MatrixType> void adjoint(const MatrixType& m) VERIFY_IS_APPROX((s1 * m1).transpose(), s1 * m1.transpose()); VERIFY_IS_APPROX((s1 * m1).conjugate(), ei_conj(s1) * m1.conjugate()); VERIFY_IS_APPROX((s1 * m1).adjoint(), ei_conj(s1) * m1.adjoint()); - + // check basic properties of dot, norm, norm2 typedef typename NumTraits<Scalar>::Real RealScalar; VERIFY_IS_APPROX((s1 * v1 + s2 * v2).dot(v3), s1 * v1.dot(v3) + s2 * v2.dot(v3)); @@ -83,16 +83,16 @@ template<typename MatrixType> void adjoint(const MatrixType& m) VERIFY_IS_MUCH_SMALLER_THAN(ei_abs(vzero.dot(v1)), static_cast<RealScalar>(1)); if(NumTraits<Scalar>::HasFloatingPoint) VERIFY_IS_MUCH_SMALLER_THAN(vzero.norm(), static_cast<RealScalar>(1)); - + // check compatibility of dot and adjoint VERIFY_IS_APPROX(v1.dot(square * v2), (square.adjoint() * v1).dot(v2)); - + // like in testBasicStuff, test operator() to check const-qualification int r = ei_random<int>(0, rows-1), c = ei_random<int>(0, cols-1); VERIFY_IS_APPROX(m1.conjugate()(r,c), ei_conj(m1(r,c))); VERIFY_IS_APPROX(m1.adjoint()(c,r), ei_conj(m1(r,c))); - + } void EigenTest::testAdjoint() @@ -104,6 +104,8 @@ void EigenTest::testAdjoint() adjoint(MatrixXi(8, 12)); adjoint(MatrixXcd(20, 20)); } + // test a large matrix only once + adjoint(Matrix<float, 100, 100>()); } } // namespace Eigen |