MCPcopy Create free account
hub / github.com/LucaFulchir/libRaptorQ / sparse_basic

Function sparse_basic

external/eigen3/test/eigen2/eigen2_sparse_basic.cpp:46–306  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44}
45
46template<typename SparseMatrixType> void sparse_basic(const SparseMatrixType& ref)
47{
48 const int rows = ref.rows();
49 const int cols = ref.cols();
50 typedef typename SparseMatrixType::Scalar Scalar;
51 enum { Flags = SparseMatrixType::Flags };
52
53 double density = std::max(8./(rows*cols), 0.01);
54 typedef Matrix<Scalar,Dynamic,Dynamic> DenseMatrix;
55 typedef Matrix<Scalar,Dynamic,1> DenseVector;
56 Scalar eps = 1e-6;
57
58 SparseMatrixType m(rows, cols);
59 DenseMatrix refMat = DenseMatrix::Zero(rows, cols);
60 DenseVector vec1 = DenseVector::Random(rows);
61 Scalar s1 = ei_random<Scalar>();
62
63 std::vector<Vector2i> zeroCoords;
64 std::vector<Vector2i> nonzeroCoords;
65 initSparse<Scalar>(density, refMat, m, 0, &zeroCoords, &nonzeroCoords);
66
67 if (zeroCoords.size()==0 || nonzeroCoords.size()==0)
68 return;
69
70 // test coeff and coeffRef
71 for (int i=0; i<(int)zeroCoords.size(); ++i)
72 {
73 VERIFY_IS_MUCH_SMALLER_THAN( m.coeff(zeroCoords[i].x(),zeroCoords[i].y()), eps );
74 if(ei_is_same_type<SparseMatrixType,SparseMatrix<Scalar,Flags> >::ret)
75 VERIFY_RAISES_ASSERT( m.coeffRef(zeroCoords[0].x(),zeroCoords[0].y()) = 5 );
76 }
77 VERIFY_IS_APPROX(m, refMat);
78
79 m.coeffRef(nonzeroCoords[0].x(), nonzeroCoords[0].y()) = Scalar(5);
80 refMat.coeffRef(nonzeroCoords[0].x(), nonzeroCoords[0].y()) = Scalar(5);
81
82 VERIFY_IS_APPROX(m, refMat);
83 /*
84 // test InnerIterators and Block expressions
85 for (int t=0; t<10; ++t)
86 {
87 int j = ei_random<int>(0,cols-1);
88 int i = ei_random<int>(0,rows-1);
89 int w = ei_random<int>(1,cols-j-1);
90 int h = ei_random<int>(1,rows-i-1);
91
92// VERIFY_IS_APPROX(m.block(i,j,h,w), refMat.block(i,j,h,w));
93 for(int c=0; c<w; c++)
94 {
95 VERIFY_IS_APPROX(m.block(i,j,h,w).col(c), refMat.block(i,j,h,w).col(c));
96 for(int r=0; r<h; r++)
97 {
98// VERIFY_IS_APPROX(m.block(i,j,h,w).col(c).coeff(r), refMat.block(i,j,h,w).col(c).coeff(r));
99 }
100 }
101// for(int r=0; r<h; r++)
102// {
103// VERIFY_IS_APPROX(m.block(i,j,h,w).row(r), refMat.block(i,j,h,w).row(r));

Callers 1

test_eigen2_sparse_basicFunction · 0.70

Calls 15

ei_randomFunction · 0.85
coeffRefMethod · 0.80
cwiseMethod · 0.80
innerVectorMethod · 0.80
innerVectorsMethod · 0.80
blockMethod · 0.80
rowsMethod · 0.45
colsMethod · 0.45
sizeMethod · 0.45
coeffMethod · 0.45
xMethod · 0.45
yMethod · 0.45

Tested by

no test coverage detected