LFDDS

Computes the determinant of a real symmetric positive definite matrix given the RTR Cholesky factorization of the matrix .

Required Arguments

FACTN by N matrix containing the RT R factorization of the coefficient matrix A as output from routine LFCDS/DLFCDS or LFTDS/DLFTDS. (Input)

DET1 — Scalar containing the mantissa of the determinant. (Output)
The value DET1 is normalized so that, 1.0  DET1 < 10.0 or DET1 = 0.0.

DET2 — Scalar containing the exponent of the determinant. (Output)
The determinant is returned in the form, det(A) = DET1 * 10DET2.

Optional Arguments

N — Number of equations. (Input)
Default: N = size (FACT,2).

LDFACT — Leading dimension of FACT exactly as specified in the dimension statement of the calling program. (Input)
Default: LDFACT = size (FACT,1).

FORTRAN 90 Interface

Generic: CALL LFDDS (FACT, DET1, DET2 [])

Specific: The specific interface names are S_LFDDS and D_LFDDS.

FORTRAN 77 Interface

Single: CALL LFDDS (N, FACT, LDFACT, DET1, DET2)

Double: The double precision name is DLFDDS.

Description

Routine LFDDS computes the determinant of a real symmetric positive definite coefficient matrix. To compute the determinant, the coefficient matrix must first undergo an RTR factorization. This may be done by calling either LFCDS or LFTDS. The formula det A = det RT det R = (det R)2 is used to compute the determinant. Since the determinant of a triangular matrix is the product of the diagonal elements,

 

(The matrix R is stored in the upper triangle of FACT.)

LFDDS is based on the LINPACK routine SPODI; see Dongarra et al. (1979).

Example

The determinant is computed for a real positive definite 3 × 3 matrix.

 

USE LFDDS_INT

USE LFTDS_INT

USE UMACH_INT

! Declare variables

INTEGER LDA, LDFACT, NOUT

PARAMETER (LDA=3, LDFACT=3)

REAL A(LDA,LDA), DET1, DET2, FACT(LDFACT,LDFACT)

!

! Set values for A

! A = ( 1.0 -3.0 2.0)

! ( -3.0 20.0 -5.0)

! ( 2.0 -5.0 6.0)

!

DATA A/1.0, -3.0, 2.0, -3.0, 20.0, -5.0, 2.0, -5.0, 6.0/

! Factor the matrix

CALL LFTDS (A, FACT)

! Compute the determinant

CALL LFDDS (FACT, DET1, DET2)

! Print results

CALL UMACH (2, NOUT)

WRITE (NOUT,99999) DET1, DET2

!

99999 FORMAT (’ The determinant of A is ’,F6.3,’ * 10**’,F2.0)

END

Output

 

The determinant of A is 2.100 * 10**1.