New user self-registration is currently disabled. Please email eigen-core-team @ if you need an account.
Bug 681 - Uninitialised value in CholmodSupport may lead to incorrect results
Uninitialised value in CholmodSupport may lead to incorrect results
Product: Eigen
Classification: Unclassified
Component: Cholesky
All All
: Normal Unknown
Assigned To: Nobody
Depends on:
  Show dependency treegraph
Reported: 2013-10-16 13:24 UTC by mcz
Modified: 2013-10-17 00:11 UTC (History)
3 users (show)

Fixed CholmodSupport.h file (19.83 KB, text/x-chdr)
2013-10-16 13:24 UTC, mcz
no flags Details

Description mcz 2013-10-16 13:24:03 UTC
Created attachment 386 [details]
Fixed CholmodSupport.h file

When using Cholmod* classes (CholmodSupport/CholmodSupport.h), I sometimes got incorrect results (depending on solver object initialisation). After checking with valgrind, I've noticed that the solver uses uninitialised values, which should default to zero. If I was lucky enough, they were zero indeed, leading to correct results.

The above-mentioned uninitialised values are:
RealScalar m_shiftOffset[2] field in CholmodBase class, which is only initialised in the second constructor, but not in the default one - CholmodBase()

res.z and fields in the first viewAsCholmod() function:
template<typename _Scalar, int _Options, typename _Index>
cholmod_sparse viewAsCholmod(SparseMatrix<_Scalar,_Options,_Index>& mat)

I attach the fixed CholmodSupport.h file (based on 3.2.0 stable release).

Thank you for creating such a great tool!
Comment 1 Christoph Hertzberg 2013-10-17 00:11:34 UTC
Thanks for the report. Fixed in default and 3.2:

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