New user self-registration is disabled due to spam. Please email eigen-core-team @ if you need an account.
Before reporting a bug, please make sure that your Eigen version is up-to-date!
Bug 810 - SparseLU determinant computes wrong/partial values
Summary: SparseLU determinant computes wrong/partial values
Alias: None
Product: Eigen
Classification: Unclassified
Component: Sparse (show other bugs)
Version: 3.2
Hardware: All All
: Normal Wrong Result
Assignee: Nobody
Depends on:
Blocks: 3.3
  Show dependency treegraph
Reported: 2014-05-14 15:49 UTC by Daniel Stöckel
Modified: 2014-10-20 13:48 UTC (History)
2 users (show)

Small C++ program reproducing the bug (588 bytes, text/x-c++src)
2014-05-14 15:49 UTC, Daniel Stöckel
no flags Details

Description Daniel Stöckel 2014-05-14 15:49:28 UTC
Created attachment 462 [details]
Small C++ program reproducing the bug

I am running on Ubuntu 12.04.4. Using Eigen 3.2.1 and current trunk (4a429f5e0483) 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)

Note You need to log in before you can comment on or make changes to this bug.