Remove dead code from CompressedRowSparseMatrix. SolveLowerTriangularInPlace SolveLowerTriangularTransposeInPlace were unused functions which can be removed. Change-Id: I0fd29c1efae2a0a74666f6e3541473bebc22ae82
diff --git a/internal/ceres/compressed_row_sparse_matrix.cc b/internal/ceres/compressed_row_sparse_matrix.cc index dceb3bc..225aabf 100644 --- a/internal/ceres/compressed_row_sparse_matrix.cc +++ b/internal/ceres/compressed_row_sparse_matrix.cc
@@ -378,26 +378,6 @@ values_.resize(num_nonzeros); } -void CompressedRowSparseMatrix::SolveLowerTriangularInPlace( - double* solution) const { - for (int r = 0; r < num_rows_; ++r) { - for (int idx = rows_[r]; idx < rows_[r + 1] - 1; ++idx) { - solution[r] -= values_[idx] * solution[cols_[idx]]; - } - solution[r] /= values_[rows_[r + 1] - 1]; - } -} - -void CompressedRowSparseMatrix::SolveLowerTriangularTransposeInPlace( - double* solution) const { - for (int r = num_rows_ - 1; r >= 0; --r) { - solution[r] /= values_[rows_[r + 1] - 1]; - for (int idx = rows_[r + 1] - 2; idx >= rows_[r]; --idx) { - solution[cols_[idx]] -= values_[idx] * solution[r]; - } - } -} - CompressedRowSparseMatrix* CompressedRowSparseMatrix::CreateBlockDiagonalMatrix( const double* diagonal, const vector<int>& blocks) { int num_rows = 0;
diff --git a/internal/ceres/compressed_row_sparse_matrix.h b/internal/ceres/compressed_row_sparse_matrix.h index 9759d13..6c069ab 100644 --- a/internal/ceres/compressed_row_sparse_matrix.h +++ b/internal/ceres/compressed_row_sparse_matrix.h
@@ -109,9 +109,6 @@ void ToCRSMatrix(CRSMatrix* matrix) const; - void SolveLowerTriangularInPlace(double* solution) const; - void SolveLowerTriangularTransposeInPlace(double* solution) const; - CompressedRowSparseMatrix* Transpose() const; // Destructive array resizing method.
diff --git a/internal/ceres/compressed_row_sparse_matrix_test.cc b/internal/ceres/compressed_row_sparse_matrix_test.cc index cc5ed08..ddaa8cc 100644 --- a/internal/ceres/compressed_row_sparse_matrix_test.cc +++ b/internal/ceres/compressed_row_sparse_matrix_test.cc
@@ -308,61 +308,6 @@ EXPECT_EQ((dense.diagonal() - diagonal).norm(), 0.0); } -class SolveLowerTriangularTest : public ::testing::Test { - protected: - void SetUp() { - matrix_.reset(new CompressedRowSparseMatrix(4, 4, 7)); - int* rows = matrix_->mutable_rows(); - int* cols = matrix_->mutable_cols(); - double* values = matrix_->mutable_values(); - - rows[0] = 0; - cols[0] = 0; - values[0] = 0.50754; - - rows[1] = 1; - cols[1] = 1; - values[1] = 0.80483; - - rows[2] = 2; - cols[2] = 1; - values[2] = 0.14120; - cols[3] = 2; - values[3] = 0.3; - - rows[3] = 4; - cols[4] = 0; - values[4] = 0.77696; - cols[5] = 1; - values[5] = 0.41860; - cols[6] = 3; - values[6] = 0.88979; - - rows[4] = 7; - } - - scoped_ptr<CompressedRowSparseMatrix> matrix_; -}; - -TEST_F(SolveLowerTriangularTest, SolveInPlace) { - double rhs_and_solution[] = {1.0, 1.0, 2.0, 2.0}; - double expected[] = {1.970288, 1.242498, 6.081864, -0.057255}; - matrix_->SolveLowerTriangularInPlace(rhs_and_solution); - for (int i = 0; i < 4; ++i) { - EXPECT_NEAR(rhs_and_solution[i], expected[i], 1e-4) << i; - } -} - -TEST_F(SolveLowerTriangularTest, TransposeSolveInPlace) { - double rhs_and_solution[] = {1.0, 1.0, 2.0, 2.0}; - const double expected[] = { -1.4706, -1.0962, 6.6667, 2.2477}; - - matrix_->SolveLowerTriangularTransposeInPlace(rhs_and_solution); - for (int i = 0; i < 4; ++i) { - EXPECT_NEAR(rhs_and_solution[i], expected[i], 1e-4) << i; - } -} - TEST(CompressedRowSparseMatrix, Transpose) { // 0 1 0 2 3 0 // 4 6 7 0 0 8
diff --git a/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc b/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc index 2c893b4..89904e0 100644 --- a/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc +++ b/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc
@@ -255,7 +255,7 @@ SuiteSparse ss; const int num_cols = A->num_cols(); - cholmod_sparse lhs = ss.CreateSparseMatrixTransposeView(A, 0); + cholmod_sparse lhs = ss.CreateSparseMatrixTransposeView(A); event_logger.AddEvent("Setup"); cholmod_factor* factor = ss.AnalyzeCholesky(&lhs, &summary.message); event_logger.AddEvent("Analysis");