SparseLU determinant computes wrong/partial values
Submitted by Daniel Stöckel
Assigned to Nobody
Link to original bugzilla bug (#810)
Version: 3.2
Description
Created attachment 462
Small C++ program reproducing the bug
I am running on Ubuntu 12.04.4. Using Eigen 3.2.1 and current trunk (9aa3dc4e) the computation of a determinant using the SparseLU module is broken for my small test case.
Given the Matrix:
2 -1
-1 2
SuperLU::absDeterminant() computes 2, where the expected output should be 3.
Solving linear equations using SuperLU::solve works without problems.
I investigated as far as MappedSuperNodalMatrix::InnerIterator, which seem to skip the last diagonal entries, as m_rowind(_colptr) does not have an appropriate entry:
m_nzval_colptr 0 2 4
m_nzval 2 -0.5 -1 -1.5
m_rowind_colptr 0 2 2
m_rowind 0 1 1
I have attached a small test case that reproduces the problem.
Addendum: make check on trunk produces three failures for me:
362 - eigensolver_generic_2 (OTHER_FAULT)
622 - mpreal_support (OTHER_FAULT)
651 - levenberg_marquardt (OTHER_FAULT)
Attachment 462, "Small C++ program reproducing the bug":
sparselu_bug.cpp