Next try - more Index fixes.

This commit is contained in:
Hauke Heibel
2010-06-20 21:44:25 +02:00
parent 546b802b77
commit f34eaa2628
5 changed files with 31 additions and 29 deletions

View File

@@ -106,8 +106,8 @@ template<typename MatrixType> void reverse(const MatrixType& m)
Scalar x = ei_random<Scalar>();
int r = ei_random<int>(0, rows-1),
c = ei_random<int>(0, cols-1);
Index r = ei_random<Index>(0, rows-1),
c = ei_random<Index>(0, cols-1);
m1.reverse()(r, c) = x;
VERIFY_IS_APPROX(x, m1(rows - 1 - r, cols - 1 - c));

View File

@@ -25,17 +25,18 @@
#include "main.h"
template<typename PermutationVectorType>
void randomPermutationVector(PermutationVectorType& v, int size)
void randomPermutationVector(PermutationVectorType& v, typename PermutationVectorType::Index size)
{
typedef typename PermutationVectorType::Index Index;
typedef typename PermutationVectorType::Scalar Scalar;
v.resize(size);
for(int i = 0; i < size; ++i) v(i) = Scalar(i);
for(Index i = 0; i < size; ++i) v(i) = Scalar(i);
if(size == 1) return;
for(int n = 0; n < 3 * size; ++n)
for(Index n = 0; n < 3 * size; ++n)
{
int i = ei_random<int>(0, size-1);
int j;
do j = ei_random<int>(0, size-1); while(j==i);
Index i = ei_random<Index>(0, size-1);
Index j;
do j = ei_random<Index>(0, size-1); while(j==i);
std::swap(v(i), v(j));
}
}
@@ -107,17 +108,17 @@ template<typename MatrixType> void permutationmatrices(const MatrixType& m)
if(rows>1 && cols>1)
{
lp2 = lp;
int i = ei_random<int>(0, rows-1);
int j;
do j = ei_random<int>(0, rows-1); while(j==i);
Index i = ei_random<Index>(0, rows-1);
Index j;
do j = ei_random<Index>(0, rows-1); while(j==i);
lp2.applyTranspositionOnTheLeft(i, j);
lm = lp;
lm.row(i).swap(lm.row(j));
VERIFY_IS_APPROX(lm, lp2.toDenseMatrix().template cast<Scalar>());
RightPermutationType rp2 = rp;
i = ei_random<int>(0, cols-1);
do j = ei_random<int>(0, cols-1); while(j==i);
i = ei_random<Index>(0, cols-1);
do j = ei_random<Index>(0, cols-1); while(j==i);
rp2.applyTranspositionOnTheRight(i, j);
rm = rp;
rm.col(i).swap(rm.col(j));

View File

@@ -105,12 +105,12 @@ template<typename MatrixType> void product_extra(const MatrixType& m)
(-m1.adjoint()*s2).eval() * (s1 * v1.adjoint()).eval());
// test the vector-matrix product with non aligned starts
int i = ei_random<int>(0,m1.rows()-2);
int j = ei_random<int>(0,m1.cols()-2);
int r = ei_random<int>(1,m1.rows()-i);
int c = ei_random<int>(1,m1.cols()-j);
int i2 = ei_random<int>(0,m1.rows()-1);
int j2 = ei_random<int>(0,m1.cols()-1);
Index i = ei_random<Index>(0,m1.rows()-2);
Index j = ei_random<Index>(0,m1.cols()-2);
Index r = ei_random<Index>(1,m1.rows()-i);
Index c = ei_random<Index>(1,m1.cols()-j);
Index i2 = ei_random<Index>(0,m1.rows()-1);
Index j2 = ei_random<Index>(0,m1.cols()-1);
VERIFY_IS_APPROX(m1.col(j2).adjoint() * m1.block(0,j,m1.rows(),c), m1.col(j2).adjoint().eval() * m1.block(0,j,m1.rows(),c).eval());
VERIFY_IS_APPROX(m1.block(i,0,r,m1.cols()) * m1.row(i2).adjoint(), m1.block(i,0,r,m1.cols()).eval() * m1.row(i2).adjoint().eval());