Fix AMD ordering when a column has only one off-diagonal non-zero (also fix bug #1045)

This commit is contained in:
Gael Guennebaud 2015-09-03 11:04:06 +02:00
parent 66c092e44e
commit 8c7e281c9e
2 changed files with 7 additions and 1 deletions

View File

@ -150,7 +150,7 @@ void minimum_degree_ordering(SparseMatrix<Scalar,ColMajor,Index>& C, Permutation
}
d = degree[i];
if(d == 1) /* node i is empty */
if(d == 1 && has_diag) /* node i is empty */
{
elen[i] = -2; /* element i is dead */
nel++;

View File

@ -41,9 +41,15 @@ template<typename T> void test_sparselu_T()
SparseLU<SparseMatrix<T, ColMajor>, AMDOrdering<int> > sparselu_amd;
SparseLU<SparseMatrix<T, ColMajor, long int>, NaturalOrdering<long int> > sparselu_natural;
<<<<<<< local
check_sparse_square_solving(sparselu_colamd);
check_sparse_square_solving(sparselu_amd);
check_sparse_square_solving(sparselu_natural, true);
=======
check_sparse_square_solving(sparselu_colamd, 300, 100000, true);
check_sparse_square_solving(sparselu_amd, 300, 10000, true);
check_sparse_square_solving(sparselu_natural, 300, 2000, true);
>>>>>>> other
check_sparse_square_abs_determinant(sparselu_colamd);
check_sparse_square_abs_determinant(sparselu_amd);