Previous Next Contents Generated Index Doc Set Home



Solution to a Linear System in a Cholesky-Factored Symmetric Positive Definite Matrix in Packed Storage

The subroutines described in this section solve the linear system Ax = b for a symmetric positive definite matrix A in packed storage, which has been Cholesky-factored by xPPCO or xPPFA, and vectors b and x.

Calling Sequence

CALL DPPSL 
(DA, N, DB)
CALL SPPSL 
(SA, N, SB)
CALL ZPPSL 
(ZA, N, ZB)
CALL CPPSL 
(CA, N, CB)






void dppsl 
(double *da, int n, double *db)
void sppsl 
(float *sa, int n, float *sb)
void zppsl 
(doublecomplex *za, int n, doublecomplex *zb)
void cppsl 
(complex *ca, int n, complex *cb)

Arguments

xA

Cholesky factorization of the matrix A, as computed by xPPCO or xPPFA.

N

Order of the matrix A. N 0.

xB

On entry, the right-hand side vector b.
On exit, the solution vector x.

Sample Program

 
      PROGRAM TEST
      IMPLICIT NONE
C
      INTEGER           LENGTA, N
      PARAMETER        (N = 4)
      PARAMETER        (LENGTA = (N * N + N) / 2)
C
      DOUBLE PRECISION  A(LENGTA), B(N), RCOND, WORK(N)
      INTEGER           INFO
C
      EXTERNAL          DPPCO, DPPSL
C
C     Initialize the array A to store in packed symmetric storage
C     mode the matrix A shown below.  Initialize the array B to
C     store the matrix B shown below.
C
C         4  3  2  1        20
C     A = 3  4  3  2    b = 20
C         2  3  4  3        20
C         1  2  3  4        20
C
      DATA A / 4.0D0, 3.0D0, 4.0D0, 2.0D0, 3.0D0, 4.0D0,
     $         1.0D0, 2.0D0, 3.0D0, 4.0D0 /
      DATA B / 4*2.0D1 /
C
      PRINT 1000
      PRINT 1010, A(1), A(2), A(4), A(7)
      PRINT 1010, A(2), A(3), A(5), A(8)
      PRINT 1010, A(4), A(5), A(6), A(9)
      PRINT 1010, A(7), A(8), A(9), A(10)
      PRINT 1020
      PRINT 1030, B
      CALL DPPCO (A, N, RCOND, WORK, INFO)
      IF ((RCOND + 1.0D0) .EQ. RCOND) THEN
        PRINT 1040
      END IF
      CALL DPPSL (A, N, B)
      PRINT 1050
      PRINT 1030, B
C
 1000 FORMAT (1X, 'A in full form:')
 1010 FORMAT (5(3X, F7.3))
 1020 FORMAT (/1X, 'b:')
 1030 FORMAT (3X, F7.3)
 1040 FORMAT (1X, 'A may be singular to working precision.')
 1050 FORMAT (/1X, 'A**(-1) * b:')
C
      END
 

Sample Output

 
 A in full form:
     4.000     3.000     2.000     1.000
     3.000     4.000     3.000     2.000
     2.000     3.000     4.000     3.000
     1.000     2.000     3.000     4.000



 b:
    20.000
    20.000
    20.000
    20.000



 A**(-1) * b:
     4.000
     0.000
     0.000
     4.000






Previous Next Contents Generated Index Doc Set Home