p?posv

Solves a symmetric positive definite system of linear equations.

Syntax

call psposv(uplo, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)

call pdposv(uplo, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)

call pcposv(uplo, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)

call pzposv(uplo, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)

Include Files

Description

The p?posv routine computes the solution to a real/complex system of linear equations

sub(A)*X = sub(B),

where sub(A) denotes A(ia:ia+n-1,ja:ja+n-1) and is an n-by-n symmetric/Hermitian distributed positive definite matrix and X and sub(B) denoting B(ib:ib+n-1,jb:jb+nrhs-1) are n-by-nrhs distributed matrices. The Cholesky decomposition is used to factor sub(A) as

sub(A) = UT*U, if uplo = 'U', or

sub(A) = L*LT, if uplo = 'L',

where U is an upper triangular matrix and L is a lower triangular matrix. The factored form of sub(A) is then used to solve the system of equations.

Input Parameters

uplo

(global). CHARACTER. Must be 'U' or 'L'.

Indicates whether the upper or lower triangular part of sub(A) is stored.

n

(global) INTEGER. The order of the distributed submatrix sub(A) (n 0).

nrhs

INTEGER. The number of right-hand sides; the number of columns of the distributed submatrix sub(B) (nrhs 0).

a

(local)

REAL for psposv

DOUBLE PRECISION for pdposv

COMPLEX for pcposv

COMPLEX*16 for pzposv.

Pointer into the local memory to an array of dimension (lld_a, LOCc(ja+n-1)). On entry, this array contains the local pieces of the n-by-n symmetric distributed matrix sub(A) to be factored.

If uplo = 'U', the leading n-by-n upper triangular part of sub(A) contains the upper triangular part of the matrix, and its strictly lower triangular part is not referenced.

If uplo = 'L', the leading n-by-n lower triangular part of sub(A) contains the lower triangular part of the distributed matrix, and its strictly upper triangular part is not referenced.

ia, ja

(global) INTEGER. The row and column indices in the global array a indicating the first row and the first column of the submatrix A, respectively.

desca

(global and local) INTEGER array, dimension (dlen_). The array descriptor for the distributed matrix A.

b

(local)

REAL for psposv

DOUBLE PRECISON for pdposv

COMPLEX for pcposv

COMPLEX*16 for pzposv.

Pointer into the local memory to an array of dimension (lld_b,LOC(jb+nrhs-1)). On entry, the local pieces of the right hand sides distributed matrix sub(B).

ib, jb

(global) INTEGER. The row and column indices in the global array b indicating the first row and the first column of the submatrix B, respectively.

descb

(global and local) INTEGER array, dimension (dlen_). The array descriptor for the distributed matrix B.

Output Parameters

a

On exit, if info = 0, this array contains the local pieces of the factor U or L from the Cholesky factorization sub(A) = UH*U, or L*LH.

b

On exit, if info = 0, sub(B) is overwritten by the solution distributed matrix X.

info

(global) INTEGER.

If info =0, the execution is successful.

If info < 0: If the i-th argument is an array and the j-entry had an illegal value, then info = -(i*100+j), if the i-th argument is a scalar and had an illegal value, then info = -i.

If info > 0: If info = k, the leading minor of order k, A(ia:ia+k-1, ja:ja+k-1) is not positive definite, and the factorization could not be completed, and the solution has not been computed.


Submit feedback on this help topic