ssidi
ssidi - (obsolete) compute the determinant, inertia, and inverse of a symmetric matrix A,
which has been UDU-factored by SSICO or SSIFA.
SUBROUTINE SSIDI( A, LDA, N, IPIVOT, DET, INERT, WORK, JOB)
INTEGER LDA, N, JOB
INTEGER IPIVOT(*), INERT(*)
REAL A(LDA,*), DET(*), WORK(*)
SUBROUTINE SSIDI_64( A, LDA, N, IPIVOT, DET, INERT, WORK, JOB)
INTEGER*8 LDA, N, JOB
INTEGER*8 IPIVOT(*), INERT(*)
REAL A(LDA,*), DET(*), WORK(*)
#include <sunperf.h>
void ssidi(float *a, int lda, int n, int *ipivot, float *det, int *inert, int job);
void ssidi_64(float *a, long lda, long n, long *ipivot, float *det, long *inert, long job);
-
* A (input/output)
-
On entry, the UDU factorization of the matrix A, as computed by
SSICO or SSIFA. On exit, if the c digit of JOB <> 0, then the upper
triangle of A contains the upper triangle of the inverse of the original
matrix A if the inverse was requested, otherwise unchanged. The strict
lower triangle of A is not referenced.
-
* LDA (input)
-
Leading dimension of the array A as specified in a dimension
or type statement. LDA >= max(1,N).
-
* N (input)
-
Order of the original matrix A. N >= 0.
-
* IPIVOT (input)
-
Pivot vector as computed by SSICO or SSIFA.
-
* DET (output)
-
On exit, if the b digit of JOB <> 0, then DET contains the
determinant of the matrix A. The determinant is stored as
b * (10 ** expon) where b is stored in DET(1) and expon is stored in DET(2).
1.0 <= |DET(1)| <= 10.0 or DET(1) = 0.0. If the b digit of JOB = 0,
DET is not referenced.
-
* INERT (output)
-
On exit, if the a digit of JOB <> 0, then INERT contains an
integer triplet where:
INERT(1) = number of positive eigenvalues
INERT(2) = number of negative eigenvalues
INERT(3) = number of zero eigenvalues
If the a digit of JOB = 0 then INERT is not referenced.
-
* WORK (workspace)
-
Scratch array with a dimension of N.
-
* JOB (input)
-
Integer in the form abc; determines operation the subroutine will perform:
a <> 0 Compute the inertia.
b <> 0 Compute the determinant.
c <> 0 Compute the inverse.
Note that the inverse should not be computed if SSICO has set RCOND = 0
or if SSIFA has set INFO >= 0.