/// Create the context for the matrix tests. TestSparseMatrices() { //std::cout<<"Matrix_test "<<NumRows<<" "<<NumCols<<" "<<BlockRows<<" "<<BlockCols<<std::endl; // resize and fill the matrices generateRandomMat( mat, true ); copyFromMat( crs1, mat ); copyFromMat( crs2, mat ); copyFromMat( fullMat, mat ); copyFromMat( mapMat, mat ); copyFromMat( eiBlock1, mat ); copyFromMat( eiBlock2, mat ); // copyFromMat( eiBlock3, mat ); copyFromMat( eiBase, mat ); eiBlock3.copyFrom(crs1); // resize and fill the vectors fullVec_ncols.resize(NCOLS); fullVec_nrows_reference.resize(NROWS); fullVec_nrows_result.resize(NROWS); eiVecM.resize(NROWS); eiVecN.resize(NCOLS); for( unsigned i=0; i<NCOLS; i++) { fullVec_ncols[i] = i; vecN[i] = i; eiVecN[i] = i; } fullMat.mul(fullVec_nrows_reference,fullVec_ncols); // cerr<<"MatrixTest: vref = " << vref << endl; vecM = mat * vecN; // matrix multiplication generateRandomMat( matMultiplier, true ); copyFromMat( crsMultiplier, matMultiplier ); copyFromMat( fullMultiplier, matMultiplier ); copyFromMat( eiBaseMultiplier, matMultiplier ); eiDenseMultiplier = Eigen::Map< EigenDenseMatrix >( &(matMultiplier.transposed())[0][0], NCOLS, NROWS ); // need to transpose because EigenDenseMatrix is ColMajor matMultiplication = mat * matMultiplier; crs1.mul( crsMultiplication, crsMultiplier ); fullMat.mul( fullMultiplication, fullMultiplier ); eiBase.mul_MT( eiBaseMultiplication, eiBaseMultiplier ); // sparse x sparse eiBase.mul_MT( eiDenseMultiplication, eiDenseMultiplier ); // sparse x dense matTransposeMultiplication = mat.multTranspose( mat ); crs1.mulTranspose( crsTransposeMultiplication, crs1 ); fullMat.mulT( fullTransposeMultiplication, fullMat ); }