| 
					
				 | 
			
			
				@@ -338,10 +338,22 @@ TEST(CompressedRowSparseMatrix, Transpose) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 13  0 14 15  9  0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   //  0 16 17  0  0  0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Block structure: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //  A  A  A  A  B  B 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //  A  A  A  A  B  B 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //  A  A  A  A  B  B 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //  C  C  C  C  D  D 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //  C  C  C  C  D  D 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //  C  C  C  C  D  D 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   CompressedRowSparseMatrix matrix(5, 6, 30); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int* rows = matrix.mutable_rows(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int* cols = matrix.mutable_cols(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   double* values = matrix.mutable_values(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  matrix.mutable_row_blocks()->push_back(3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  matrix.mutable_row_blocks()->push_back(3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  matrix.mutable_col_blocks()->push_back(4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  matrix.mutable_col_blocks()->push_back(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   rows[0] = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cols[0] = 1; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -376,6 +388,16 @@ TEST(CompressedRowSparseMatrix, Transpose) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   scoped_ptr<CompressedRowSparseMatrix> transpose(matrix.Transpose()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ASSERT_EQ(transpose->row_blocks().size(), matrix.col_blocks().size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  for (int i = 0; i < transpose->row_blocks().size(); ++i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    EXPECT_EQ(transpose->row_blocks()[i], matrix.col_blocks()[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ASSERT_EQ(transpose->col_blocks().size(), matrix.row_blocks().size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  for (int i = 0; i < transpose->col_blocks().size(); ++i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    EXPECT_EQ(transpose->col_blocks()[i], matrix.row_blocks()[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   Matrix dense_matrix; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   matrix.ToDenseMatrix(&dense_matrix); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |