Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

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?posvroutine 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 matrix sub(A) (n 0).

nrhs

INTEGER. The number of right-hand sides; the number of columns of the distributed matrix 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 size (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 matrix A indicating the first row and the first column of the submatrix A, respectively.

desca

(global and local) INTEGER array of size 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 size (lld_b,LOCc(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 matrix B indicating the first row and the first column of the submatrix B, respectively.

descb

(global and local) INTEGER array of size 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-th 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.

See Also