diff options
author | Gael Guennebaud <g.gael@free.fr> | 2008-12-11 18:26:24 +0000 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2008-12-11 18:26:24 +0000 |
commit | 5015e483613490ae65433e8eeae00dc176aeedf3 (patch) | |
tree | 024f2eb41ff26a58116418135002da92580ba13d /test | |
parent | beabf008b04dc9b449b23f082bab76d384983b73 (diff) |
Sparse module: add a more flexible SparseMatrix::fillrand() function
which allows to fill a matrix with random inner coordinates (makes sense
only when a very few coeffs are inserted per col/row)
Diffstat (limited to 'test')
-rw-r--r-- | test/sparse_basic.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/sparse_basic.cpp b/test/sparse_basic.cpp index c890d9528..c50682810 100644 --- a/test/sparse_basic.cpp +++ b/test/sparse_basic.cpp @@ -153,6 +153,26 @@ template<typename Scalar> void sparse_basic(int rows, int cols) #ifdef _SPARSE_HASH_MAP_H_ VERIFY(( test_random_setter<RandomSetter<SparseMatrix<Scalar>, GoogleSparseHashMapTraits> >(m,refMat,nonzeroCoords) )); #endif + + // test fillrand + { + DenseMatrix m1(rows,cols); + m1.setZero(); + SparseMatrix<Scalar> m2(rows,cols); + m2.startFill(); + for (int j=0; j<cols; ++j) + { + for (int k=0; k<rows/2; ++k) + { + int i = ei_random<int>(0,rows-1); + if (m1.coeff(i,j)==Scalar(0)) + m2.fillrand(i,j) = m1(i,j) = ei_random<Scalar>(); + } + } + m2.endFill(); + std::cerr << m1 << "\n\n" << m2 << "\n"; + VERIFY_IS_APPROX(m1,m2); + } // { // m.setZero(); // VERIFY_IS_NOT_APPROX(m, refMat); |