Re: [eigen] Sparse Cholesky Factors

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]



Right, vectorD() is part of the public API. Regarding the determinant, there is a clear discrepancy across the different decomposition classes. Any decomposition allowing to compute the determinant should provide the same set of variants (i.e., sign, abs, log-abs).

cheers,
gael

On Sat, Apr 4, 2015 at 3:06 PM, Brad Bell <bradbell@xxxxxxxxxx> wrote:
My mistake, VectorD is part of the documentation for the LDL factorization. Thus I think that I have answered my own quesiton



On 4/4/2015 5:44 AM, Brad Bell wrote:
Looking at the source code
    eigen-3.2.1/Eigen/src/SparseCholesky/SimplicialCholesky.h
one can see the undocumented public member function

inline const VectorType vectorD() const {
        eigen_assert(Base::m_factorizationIsOk && "Simplicial Cholesky not factorized");
        return Base::m_diag;
}

Is vectorD() intended to be part of the Eigen API ?

It appears that in the case of an eigen LDL Cholesky factorization
http://eigen.tuxfamily.org/dox-devel/classEigen_1_1SimplicialLDLT.html
the LDL means the same as in
http://en.wikipedia.org/wiki/Cholesky_decomposition#LDL_decomposition
It also appears that vectorD() returns the diagonal of the D matrix for this case.

Is this is true ? If so, one can uses these facts to directly compute the log of the determinant.




On 4/3/2015 6:17 AM, Brad Bell wrote:
Looking at the documentation
http://eigen.tuxfamily.org/dox-devel/classEigen_1_1SimplicialLLT.html
there is a determinant member function
    Scalar Eigen::SimplicialLLT< _MatrixType, _UpLo, _Ordering >::determinant() const

For large matrices, the determinant often results in underflow or overflow. Is there also a log-determinant function (to avoid this problem) ?














Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/