| 31 | #endif |
| 32 | |
| 33 | template<typename MatrixType> void ref_matrix(const MatrixType& m) |
| 34 | { |
| 35 | typedef typename MatrixType::Index Index; |
| 36 | typedef typename MatrixType::Scalar Scalar; |
| 37 | typedef typename MatrixType::RealScalar RealScalar; |
| 38 | typedef Matrix<Scalar,Dynamic,Dynamic,MatrixType::Options> DynMatrixType; |
| 39 | typedef Matrix<RealScalar,Dynamic,Dynamic,MatrixType::Options> RealDynMatrixType; |
| 40 | |
| 41 | typedef Ref<MatrixType> RefMat; |
| 42 | typedef Ref<DynMatrixType> RefDynMat; |
| 43 | typedef Ref<const DynMatrixType> ConstRefDynMat; |
| 44 | typedef Ref<RealDynMatrixType , 0, Stride<Dynamic,Dynamic> > RefRealMatWithStride; |
| 45 | |
| 46 | Index rows = m.rows(), cols = m.cols(); |
| 47 | |
| 48 | MatrixType m1 = MatrixType::Random(rows, cols), |
| 49 | m2 = m1; |
| 50 | |
| 51 | Index i = internal::random<Index>(0,rows-1); |
| 52 | Index j = internal::random<Index>(0,cols-1); |
| 53 | Index brows = internal::random<Index>(1,rows-i); |
| 54 | Index bcols = internal::random<Index>(1,cols-j); |
| 55 | |
| 56 | RefMat rm0 = m1; |
| 57 | VERIFY_IS_EQUAL(rm0, m1); |
| 58 | RefDynMat rm1 = m1; |
| 59 | VERIFY_IS_EQUAL(rm1, m1); |
| 60 | RefDynMat rm2 = m1.block(i,j,brows,bcols); |
| 61 | VERIFY_IS_EQUAL(rm2, m1.block(i,j,brows,bcols)); |
| 62 | rm2.setOnes(); |
| 63 | m2.block(i,j,brows,bcols).setOnes(); |
| 64 | VERIFY_IS_EQUAL(m1, m2); |
| 65 | |
| 66 | m2.block(i,j,brows,bcols).setRandom(); |
| 67 | rm2 = m2.block(i,j,brows,bcols); |
| 68 | VERIFY_IS_EQUAL(m1, m2); |
| 69 | |
| 70 | ConstRefDynMat rm3 = m1.block(i,j,brows,bcols); |
| 71 | m1.block(i,j,brows,bcols) *= 2; |
| 72 | m2.block(i,j,brows,bcols) *= 2; |
| 73 | VERIFY_IS_EQUAL(rm3, m2.block(i,j,brows,bcols)); |
| 74 | RefRealMatWithStride rm4 = m1.real(); |
| 75 | VERIFY_IS_EQUAL(rm4, m2.real()); |
| 76 | rm4.array() += 1; |
| 77 | m2.real().array() += 1; |
| 78 | VERIFY_IS_EQUAL(m1, m2); |
| 79 | } |
| 80 | |
| 81 | template<typename VectorType> void ref_vector(const VectorType& m) |
| 82 | { |