aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2008-12-11 18:26:24 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2008-12-11 18:26:24 +0000
commit5015e483613490ae65433e8eeae00dc176aeedf3 (patch)
tree024f2eb41ff26a58116418135002da92580ba13d /test
parentbeabf008b04dc9b449b23f082bab76d384983b73 (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.cpp20
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);