mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Fix segfault in CholmodBase::factorize() for zero matrix
This commit is contained in:
committed by
Charles Schlosser
parent
7b87b21910
commit
d1d87973f4
@@ -54,6 +54,13 @@ void test_cholmod_ST() {
|
||||
check_sparse_spd_determinant(llt_colmajor_upper);
|
||||
check_sparse_spd_determinant(ldlt_colmajor_lower);
|
||||
check_sparse_spd_determinant(ldlt_colmajor_upper);
|
||||
|
||||
check_sparse_zero_matrix(chol_colmajor_lower);
|
||||
check_sparse_zero_matrix(chol_colmajor_upper);
|
||||
check_sparse_zero_matrix(llt_colmajor_lower);
|
||||
check_sparse_zero_matrix(llt_colmajor_upper);
|
||||
check_sparse_zero_matrix(ldlt_colmajor_lower);
|
||||
check_sparse_zero_matrix(ldlt_colmajor_upper);
|
||||
}
|
||||
|
||||
template <typename T, int flags, typename IdxType>
|
||||
|
||||
@@ -484,6 +484,15 @@ void check_sparse_spd_determinant(Solver& solver) {
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Solver>
|
||||
void check_sparse_zero_matrix(Solver& solver) {
|
||||
typedef typename Solver::MatrixType Mat;
|
||||
|
||||
Mat A(1, 1);
|
||||
solver.compute(A);
|
||||
VERIFY_IS_EQUAL(solver.info(), NumericalIssue);
|
||||
}
|
||||
|
||||
template <typename Solver, typename DenseMat>
|
||||
Index generate_sparse_square_problem(Solver&, typename Solver::MatrixType& A, DenseMat& dA, int maxSize = 300,
|
||||
int options = ForceNonZeroDiag) {
|
||||
|
||||
Reference in New Issue
Block a user