If the symmetric positive definite matrix *A* is represented by its Cholesky decomposition *A = LL ^{ T}* or

As Cholesky decomposition is twice as fast as LU-decomposition which is used to calculate general matrix determinants, it is recommended to use Cholesky decomposition when calculating a determinant of a symmetric positive definite matrix. In order to calculate the determinant of a symmetric matrix which is not positive definite algorithm on the basis of LDLT-decomposition can be used.

There are two subroutines in this module. The first subroutine, **SPDMatrixCholeskyDet**, calculates the determinant of a matrix whose Cholesky decomposition has already been generated. The second subroutine, **SPDMatrixDet** (Symmetric Positive Definite), works with symmetric matrices whose Cholesky decomposition hasn't been generated yet.

If the input matrix is not positive definite, then **SPDMatrixDet** subroutine cannot calculate the determinant, therefore the subroutine returns to a negative number. This error is easily recognized because the determinant of a positive definite matrix is a strictly positive number.

*This article is licensed for personal use only.*

ALGLIB Project offers you two editions of ALGLIB:

**ALGLIB Free Edition**:

delivered for free

offers full set of numerical functionality

extensive algorithmic optimizations

no low level optimizations

non-commercial license

**ALGLIB Commercial Edition**:

flexible pricing

offers full set of numerical functionality

extensive algorithmic optimizations

high performance (SMP, SIMD)

commercial license with support plan

Links to download sections for Free and Commercial editions can be found below:

C++ library.

Delivered with sources.

Monolithic design.

Extreme portability.

Delivered with sources.

Monolithic design.

Extreme portability.

C# library with native kernels.

Delivered with sources.

VB.NET and IronPython wrappers.

Extreme portability.

Delivered with sources.

VB.NET and IronPython wrappers.

Extreme portability.

Delphi wrapper around C core.

Delivered as precompiled binary.

Compatible with FreePascal.

Delivered as precompiled binary.

Compatible with FreePascal.

CPython wrapper around C core.

Delivered as precompiled binary.

Delivered as precompiled binary.