Previous: sspco Up: ../linpack.html Next: sspfa
SUBROUTINE SSPDI(AP,N,KPVT,DET,INERT,WORK,JOB)
INTEGER N,JOB
REAL AP(1),WORK(1)
REAL DET(2)
INTEGER KPVT(1),INERT(3)
C
C SSPDI COMPUTES THE DETERMINANT, INERTIA AND INVERSE
C OF A REAL SYMMETRIC MATRIX USING THE FACTORS FROM SSPFA,
C WHERE THE MATRIX IS STORED IN PACKED FORM.
C
C ON ENTRY
C
C AP REAL (N*(N+1)/2)
C THE OUTPUT FROM SSPFA.
C
C N INTEGER
C THE ORDER OF THE MATRIX A.
C
C KPVT INTEGER(N)
C THE PIVOT VECTOR FROM SSPFA.
C
C WORK REAL(N)
C WORK VECTOR. CONTENTS IGNORED.
C
C JOB INTEGER
C JOB HAS THE DECIMAL EXPANSION ABC WHERE
C IF C .NE. 0, THE INVERSE IS COMPUTED,
C IF B .NE. 0, THE DETERMINANT IS COMPUTED,
C IF A .NE. 0, THE INERTIA IS COMPUTED.
C
C FOR EXAMPLE, JOB = 111 GIVES ALL THREE.
C
C ON RETURN
C
C VARIABLES NOT REQUESTED BY JOB ARE NOT USED.
C
C AP CONTAINS THE UPPER TRIANGLE OF THE INVERSE OF
C THE ORIGINAL MATRIX, STORED IN PACKED FORM.
C THE COLUMNS OF THE UPPER TRIANGLE ARE STORED
C SEQUENTIALLY IN A ONE-DIMENSIONAL ARRAY.
C
C DET REAL(2)
C DETERMINANT OF ORIGINAL MATRIX.
C DETERMINANT = DET(1) * 10.0**DET(2)
C WITH 1.0 .LE. ABS(DET(1)) .LT. 10.0
C OR DET(1) = 0.0.
C
C INERT INTEGER(3)
C THE INERTIA OF THE ORIGINAL MATRIX.
C INERT(1) = NUMBER OF POSITIVE EIGENVALUES.
C INERT(2) = NUMBER OF NEGATIVE EIGENVALUES.
C INERT(3) = NUMBER OF ZERO EIGENVALUES.
C
C ERROR CONDITION
C
C A DIVISION BY ZERO WILL OCCUR IF THE INVERSE IS REQUESTED
C AND SSPCO HAS SET RCOND .EQ. 0.0
C OR SSPFA HAS SET INFO .NE. 0 .
C
C LINPACK. THIS VERSION DATED 08/14/78 .
C JAMES BUNCH, UNIV. CALIF. SAN DIEGO, ARGONNE NAT. LAB.
C
C SUBROUTINES AND FUNCTIONS
C
C BLAS SAXPY,SCOPY,SDOT,SSWAP
C FORTRAN ABS,IABS,MOD
C