Previous: chpdi Up: ../linpack.html Next: chpsl


CHPFA

       SUBROUTINE CHPFA(AP,N,KPVT,INFO)
       INTEGER N,KPVT(1),INFO
       COMPLEX AP(1)
 C
 C     CHPFA FACTORS A COMPLEX HERMITIAN MATRIX STORED IN
 C     PACKED FORM BY ELIMINATION WITH SYMMETRIC PIVOTING.
 C
 C     TO SOLVE  A*X = B , FOLLOW CHPFA BY CHPSL.
 C     TO COMPUTE  INVERSE(A)*C , FOLLOW CHPFA BY CHPSL.
 C     TO COMPUTE  DETERMINANT(A) , FOLLOW CHPFA BY CHPDI.
 C     TO COMPUTE  INERTIA(A) , FOLLOW CHPFA BY CHPDI.
 C     TO COMPUTE  INVERSE(A) , FOLLOW CHPFA BY CHPDI.
 C
 C     ON ENTRY
 C
 C        AP      COMPLEX (N*(N+1)/2)
 C                THE PACKED FORM OF A HERMITIAN MATRIX  A .  THE
 C                COLUMNS OF THE UPPER TRIANGLE ARE STORED SEQUENTIALLY
 C                IN A ONE-DIMENSIONAL ARRAY OF LENGTH  N*(N+1)/2 .
 C                SEE COMMENTS BELOW FOR DETAILS.
 C
 C        N       INTEGER
 C                THE ORDER OF THE MATRIX  A .
 C
 C     OUTPUT
 C
 C        AP      A BLOCK DIAGONAL MATRIX AND THE MULTIPLIERS WHICH
 C                WERE USED TO OBTAIN IT STORED IN PACKED FORM.
 C                THE FACTORIZATION CAN BE WRITTEN  A = U*D*CTRANS(U)
 C                WHERE  U  IS A PRODUCT OF PERMUTATION AND UNIT
 C                UPPER TRIANGULAR MATRICES , CTRANS(U) IS THE
 C                CONJUGATE TRANSPOSE OF  U , AND  D  IS BLOCK DIAGONAL
 C                WITH 1 BY 1 AND 2 BY 2 BLOCKS.
 C
 C        KPVT    INTEGER(N)
 C                AN INTEGER VECTOR OF PIVOT INDICES.
 C
 C        INFO    INTEGER
 C                = 0  NORMAL VALUE.
 C                = K  IF THE K-TH PIVOT BLOCK IS SINGULAR. THIS IS
 C                     NOT AN ERROR CONDITION FOR THIS SUBROUTINE,
 C                     BUT IT DOES INDICATE THAT CHPSL OR CHPDI MAY
 C                     DIVIDE BY ZERO IF CALLED.
 C
 C     PACKED STORAGE
 C
 C          THE FOLLOWING PROGRAM SEGMENT WILL PACK THE UPPER
 C          TRIANGLE OF A HERMITIAN MATRIX.
 C
 C                K = 0
 C                DO 20 J = 1, N
 C                   DO 10 I = 1, J
 C                      K = K + 1
 C                      AP(K)  = A(I,J)
 C             10    CONTINUE
 C             20 CONTINUE
 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,CSWAP,ICAMAX
 C     FORTRAN ABS,AIMAG,AMAX1,CMPLX,CONJG,REAL,SQRT