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
00033 typedef typename MatrixType::Scalar Scalar;
00034 typedef Matrix<Scalar, MatrixType::RowsAtCompileTime, 1> VectorType;
00035 typedef Matrix<Scalar, 1, MatrixType::ColsAtCompileTime> RowVectorType;
00036 int rows = m.rows();
00037 int cols = m.cols();
00038
00039 int r = ei_random<int>(0, rows-1), r2 = ei_random<int>(0, rows-1), c = ei_random<int>(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_eigen2_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 }