Previous: dsyrfs Up: ../lapack-d.html Next: dsysvx


dsysv


 NAME
      DSYSV - compute the solution to a real system of linear
      equations  A * X = B,

 SYNOPSIS
      SUBROUTINE DSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK,
                        LWORK, INFO )

          CHARACTER     UPLO

          INTEGER       INFO, LDA, LDB, LWORK, N, NRHS

          INTEGER       IPIV( * )

          DOUBLE        PRECISION A( LDA, * ), B( LDB, * ), WORK(
                        LWORK )

 PURPOSE
      DSYSV computes the solution to a real system of linear equa-
      tions
         A * X = B, where A is an N-by-N symmetric matrix and X
      and B are N-by-NRHS matrices.

      The diagonal pivoting method is used to factor A as
         A = U * D * U**T,  if UPLO = 'U', or
         A = L * D * L**T,  if UPLO = 'L',
      where U (or L) is a product of permutation and unit upper
      (lower) triangular matrices, and D is symmetric and block
      diagonal with 1-by-1 and 2-by-2 diagonal blocks.  The fac-
      tored form of A is then used to solve the system of equa-
      tions A * X = B.

 ARGUMENTS
      UPLO    (input) CHARACTER*1
              = 'U':  Upper triangle of A is stored;
              = 'L':  Lower triangle of A is stored.

      N       (input) INTEGER
              The number of linear equations, i.e., the order of
              the matrix A.  N >= 0.

      NRHS    (input) INTEGER
              The number of right hand sides, i.e., the number of
              columns of the matrix B.  NRHS >= 0.

      A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
              On entry, the symmetric matrix A.  If UPLO = 'U',
              the leading N-by-N upper triangular part of A con-
              tains the upper triangular part of the matrix A, and
              the strictly lower triangular part of A is not
              referenced.  If UPLO = 'L', the leading N-by-N lower

              triangular part of A contains the lower triangular
              part of the matrix A, and the strictly upper tri-
              angular part of A is not referenced.

              On exit, if INFO = 0, the block diagonal matrix D
              and the multipliers used to obtain the factor U or L
              from the factorization A = U*D*U**T or A = L*D*L**T
              as computed by DSYTRF.

      LDA     (input) INTEGER
              The leading dimension of the array A.  LDA >=
              max(1,N).

      IPIV    (output) INTEGER array, dimension (N)
              Details of the interchanges and the block structure
              of D, as determined by DSYTRF.  If IPIV(k) > 0, then
              rows and columns k and IPIV(k) were interchanged,
              and D(k,k) is a 1-by-1 diagonal block.  If UPLO =
              'U' and IPIV(k) = IPIV(k-1) < 0, then rows and
              columns k-1 and -IPIV(k) were interchanged and D(k-
              1:k,k-1:k) is a 2-by-2 diagonal block.  If UPLO =
              'L' and IPIV(k) = IPIV(k+1) < 0, then rows and
              columns k+1 and -IPIV(k) were interchanged and
              D(k:k+1,k:k+1) is a 2-by-2 diagonal block.

 (LDB,NRHS)
      B       (input/output) DOUBLE PRECISION array, dimension
              On entry, the N-by-NRHS right hand side matrix B.
              On exit, if INFO = 0, the N-by-NRHS solution matrix
              X.

      LDB     (input) INTEGER
              The leading dimension of the array B.  LDB >=
              max(1,N).

      WORK    (workspace) DOUBLE PRECISION array, dimension (LWORK)
              On exit, if INFO = 0, WORK(1) returns the optimal
              LWORK.

      LWORK   (input) INTEGER
              The length of WORK.  LWORK >= 1, and for best per-
              formance LWORK >= N*NB, where NB is the optimal
              blocksize for DSYTRF.

      INFO    (output) INTEGER
              = 0: successful exit
              < 0: if INFO = -i, the i-th argument had an illegal
              value
              > 0: if INFO = i, D(i,i) is exactly zero.  The fac-
              torization has been completed, but the block diago-
              nal matrix D is exactly singular, so the solution
              could not be computed.