| 
					
				 | 
			
			
				@@ -44,17 +44,35 @@ struct CRSMatrix { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int num_rows; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int num_cols; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // A compressed row matrix stores its contents in three arrays. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // The non-zero pattern of the i^th row is given by 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // A compressed row matrix stores its contents in three arrays, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // rows, cols and values. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //   rows[cols[i] ... cols[i + 1]] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // rows is a num_rows + 1 sized array that points into the cols and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // values array. For each row i: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // and the corresponding values by 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // cols[rows[i]] ... cols[rows[i + 1] - 1] are the indices of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // non-zero columns of row i. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //   values[cols[i] ... cols[i + 1]] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // values[rows[i]] .. values[rows[i + 1] - 1] are the values of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // corresponding entries. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Thus, cols is a vector of size num_cols + 1, and rows and values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // have as many entries as number of non-zeros in the matrix. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // cols and values contain as many entries as there are non-zeros in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // the matrix. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // e.g, consider the 3x4 sparse matrix 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //  [ 0 10  0  4 ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //  [ 0  2 -3  2 ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //  [ 1  2  0  0 ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // The three arrays will be: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //            -row0-  ---row1---  -row2- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //  rows   = [ 0,      2,          5,     7] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //  cols   = [ 1,  3,  1,  2,  3,  0,  1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //  values = [10,  4,  2, -3,  2,  1,  2] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   vector<int> cols; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   vector<int> rows; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   vector<double> values; 
			 |