Previous: chpco Up: ../linpack.html Next: chpfa
SUBROUTINE CHPDI(AP,N,KPVT,DET,INERT,WORK,JOB) INTEGER N,JOB COMPLEX AP(1),WORK(1) REAL DET(2) INTEGER KPVT(1),INERT(3) C C CHPDI COMPUTES THE DETERMINANT, INERTIA AND INVERSE C OF A COMPLEX HERMITIAN MATRIX USING THE FACTORS FROM CHPFA, C WHERE THE MATRIX IS STORED IN PACKED FORM. C C ON ENTRY C C AP COMPLEX (N*(N+1)/2) C THE OUTPUT FROM CHPFA. C C N INTEGER C THE ORDER OF THE MATRIX A. C C KPVT INTEGER(N) C THE PIVOT VECTOR FROM CHPFA. C C WORK COMPLEX(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 CHPCO HAS SET RCOND .EQ. 0.0 C OR CHPFA 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 CAXPY,CCOPY,CDOTC,CSWAP C FORTRAN ABS,CABS,CMPLX,CONJG,IABS,MOD,REAL