Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "main.h"
00026
00027 template<typename MatrixType> void miscMatrices(const MatrixType& m)
00028 {
00029
00030
00031
00032 typedef typename MatrixType::Index Index;
00033 typedef typename MatrixType::Scalar Scalar;
00034 typedef Matrix<Scalar, MatrixType::RowsAtCompileTime, 1> VectorType;
00035 typedef Matrix<Scalar, 1, MatrixType::ColsAtCompileTime> RowVectorType;
00036 Index rows = m.rows();
00037 Index cols = m.cols();
00038
00039 Index r = internal::random<Index>(0, rows-1), r2 = internal::random<Index>(0, rows-1), c = internal::random<Index>(0, cols-1);
00040 VERIFY_IS_APPROX(MatrixType::Ones(rows,cols)(r,c), static_cast<Scalar>(1));
00041 MatrixType m1 = MatrixType::Ones(rows,cols);
00042 VERIFY_IS_APPROX(m1(r,c), static_cast<Scalar>(1));
00043 VectorType v1 = VectorType::Random(rows);
00044 v1[0];
00045 Matrix<Scalar, MatrixType::RowsAtCompileTime, MatrixType::RowsAtCompileTime>
00046 square(v1.asDiagonal());
00047 if(r==r2) VERIFY_IS_APPROX(square(r,r2), v1[r]);
00048 else VERIFY_IS_MUCH_SMALLER_THAN(square(r,r2), static_cast<Scalar>(1));
00049 square = MatrixType::Zero(rows, rows);
00050 square.diagonal() = VectorType::Ones(rows);
00051 VERIFY_IS_APPROX(square, MatrixType::Identity(rows, rows));
00052 }
00053
00054 void test_miscmatrices()
00055 {
00056 for(int i = 0; i < g_repeat; i++) {
00057 CALL_SUBTEST_1( miscMatrices(Matrix<float, 1, 1>()) );
00058 CALL_SUBTEST_2( miscMatrices(Matrix4d()) );
00059 CALL_SUBTEST_3( miscMatrices(MatrixXcf(3, 3)) );
00060 CALL_SUBTEST_4( miscMatrices(MatrixXi(8, 12)) );
00061 CALL_SUBTEST_5( miscMatrices(MatrixXcd(20, 20)) );
00062 }
00063 }