home *** CD-ROM | disk | FTP | other *** search
- SUBROUTINE SPPSL(AP,N,B)
- INTEGER N
- REAL AP(1),B(1)
- C
- C SPPSL SOLVES THE REAL SYMMETRIC POSITIVE DEFINITE
- C SYSTEM A * X = B
- C USING THE FACTORS COMPUTED BY SPPCO OR SPPFA.
- C
- C ON ENTRY
- C
- C AP REAL (N*(N+1)/2)
- C THE OUTPUT FROM SPPCO OR SPPFA.
- C
- C N INTEGER
- C THE ORDER OF THE MATRIX A .
- C
- C B REAL(N)
- C THE RIGHT HAND SIDE VECTOR.
- C
- C ON RETURN
- C
- C B THE SOLUTION VECTOR X .
- C
- C ERROR CONDITION
- C
- C A DIVISION BY ZERO WILL OCCUR IF THE INPUT FACTOR CONTAINS
- C A ZERO ON THE DIAGONAL. TECHNICALLY THIS INDICATES
- C SINGULARITY BUT IT IS USUALLY CAUSED BY IMPROPER SUBROUTINE
- C ARGUMENTS. IT WILL NOT OCCUR IF THE SUBROUTINES ARE CALLED
- C CORRECTLY AND INFO .EQ. 0 .
- C
- C TO COMPUTE INVERSE(A) * C WHERE C IS A MATRIX
- C WITH P COLUMNS
- C CALL SPPCO(AP,N,RCOND,Z,INFO)
- C IF (RCOND IS TOO SMALL .OR. INFO .NE. 0) GO TO ...
- C DO 10 J = 1, P
- C CALL SPPSL(AP,N,C(1,J))
- C 10 CONTINUE
- C
- C LINPACK. THIS VERSION DATED 08/14/78 .
- C CLEVE MOLER, UNIVERSITY OF NEW MEXICO, ARGONNE NATIONAL LAB.
- C
- C SUBROUTINES AND FUNCTIONS
- C
- C BLAS SAXPY,SDOT
- C
- C INTERNAL VARIABLES
- C
- REAL SDOT,T
- INTEGER K,KB,KK
- C
- KK = 0
- DO 10 K = 1, N
- T = SDOT(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 SAXPY(K-1,T,AP(KK+1),1,B(1),1)
- 20 CONTINUE
- RETURN
- END