| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | *DECK CPPSL      SUBROUTINE CPPSL (AP, N, B)C***BEGIN PROLOGUE  CPPSLC***PURPOSE  Solve the complex Hermitian positive definite system usingC            the factors computed by CPPCO or CPPFA.C***LIBRARY   SLATEC (LINPACK)C***CATEGORY  D2D1BC***TYPE      COMPLEX (SPPSL-S, DPPSL-D, CPPSL-C)C***KEYWORDS  LINEAR ALGEBRA, LINPACK, MATRIX, PACKED,C             POSITIVE DEFINITE, SOLVEC***AUTHOR  Moler, C. B., (U. of New Mexico)C***DESCRIPTIONCC     CPPSL solves the complex Hermitian positive definite systemC     A * X = BC     using the factors computed by CPPCO or CPPFA.CC     On EntryCC        AP      COMPLEX (N*(N+1)/2)C                the output from CPPCO or CPPFA.CC        N       INTEGERC                the order of the matrix  A .CC        B       COMPLEX(N)C                the right hand side vector.CC     On ReturnCC        B       the solution vector  X .CC     Error ConditionCC        A division by zero will occur if the input factor containsC        a zero on the diagonal.  Technically this indicatesC        singularity but it is usually caused by improper subroutineC        arguments.  It will not occur if the subroutines are calledC        correctly and  INFO .EQ. 0 .CC     To compute  INVERSE(A) * C  where  C  is a matrixC     with  P  columnsC           CALL CPPCO(AP,N,RCOND,Z,INFO)C           IF (RCOND is too small .OR. INFO .NE. 0) GO TO ...C           DO 10 J = 1, PC              CALL CPPSL(AP,N,C(1,J))C        10 CONTINUECC***REFERENCES  J. J. Dongarra, J. R. Bunch, C. B. Moler, and G. W.C                 Stewart, LINPACK Users' Guide, SIAM, 1979.C***ROUTINES CALLED  CAXPY, CDOTCC***REVISION HISTORY  (YYMMDD)C   780814  DATE WRITTENC   890831  Modified array declarations.  (WRB)C   890831  REVISION DATE from Version 3.2C   891214  Prologue converted to Version 4.0 format.  (BAB)C   900326  Removed duplicate information from DESCRIPTION section.C           (WRB)C   920501  Reformatted the REFERENCES section.  (WRB)C***END PROLOGUE  CPPSL      INTEGER N      COMPLEX AP(*),B(*)C      COMPLEX CDOTC,T      INTEGER K,KB,KKC***FIRST EXECUTABLE STATEMENT  CPPSL      KK = 0      DO 10 K = 1, N         T = CDOTC(K-1,AP(KK+1),1,B(1),1)         KK = KK + K         B(K) = (B(K) - T)/AP(KK)   10 CONTINUE      DO 20 KB = 1, N         K = N + 1 - KB         B(K) = B(K)/AP(KK)         KK = KK - K         T = -B(K)         CALL CAXPY(K-1,T,AP(KK+1),1,B(1),1)   20 CONTINUE      RETURN      END
 |