p?posv
p?posv
Solves a symmetric positive definite system of linear equations.
Syntax
void
psposv
(
char
*uplo
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
float
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
float
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_INT
*info
);
void
pdposv
(
char
*uplo
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
double
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
double
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_INT
*info
);
void
pcposv
(
char
*uplo
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
MKL_Complex8
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_Complex8
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_INT
*info
);
void
pzposv
(
char
*uplo
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
MKL_Complex16
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_Complex16
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_INT
*info
);
Include Files
- mkl_scalapack.h
Description
The
p?posv
function
computes the solution to a real/complex system of linear equationssub(
, A
)*X
= sub(B
)where sub( and is an are
A
) denotes A
(ia
:ia
+n
-1,ja
:ja
+n
-1)n-
by-n
symmetric/Hermitian distributed positive definite matrix and X
and sub(B
) denoting B
(ib
:ib
+n
-1,jb
:jb
+nrhs
-1)n
-by-nrhs
distributed matrices. The Cholesky decomposition is used to factor sub(A
) as sub(*
, if A
) = U
T
U
uplo
= 'U'sub(
, if A
) = L
*L
T
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) Must be'U'or'L'.Indicates whether the upper or lower triangular part of sub(A) is stored.
- n
- (global) The order of the distributed matrix sub(A)(.n≥0)
- nrhs
- The number of right-hand sides; the number of columns of the distributed matrix sub(B)(.nrhs≥0)
- a
- (local)Pointer into the local memory to an array of size. On entry, this array contains the local pieces of thelld_a*LOCc(ja+n-1)n-by-nsymmetric distributed matrix sub(A) to be factored.If, the leadinguplo= 'U'n-by-nupper triangular part of sub(A) contains the upper triangular part of the matrix, and its strictly lower triangular part is not referenced.If, the leadinguplo= 'L'n-by-nlower 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) The row and column indices in the global matrixAindicating the first row and the first column of the submatrixA, respectively.
- desca
- (global and local) array of sizedlen_. The array descriptor for the distributed matrixA.
- b
- (local)Pointer into the local memory to an array of size. On entry, the local pieces of the right hand sides distributed matrix sub(lld_b*LOCc(jb+nrhs-1)B).
- ib,jb
- (global) The row and column indices in the global matrixBindicating the first row and the first column of the submatrixB, respectively.
- descb
- (global and local) array of sizedlen_. The array descriptor for the distributed matrixB.
Output Parameters
- a
- On exit, if, this array contains the local pieces of the factorinfo= 0UorLfrom the Cholesky factorizationsub(, orA) =U*HUL*L.H
- b
- On exit, if, sub(info= 0B) is overwritten by the solution distributed matrixX.
- info
- (global)If, the execution is successful.info=0If: If theinfo< 0i-th argument is an array and thej-th entry, indexedhad an illegal value, thenj-1,, if theinfo= -(i*100+j)i-th argument is a scalar and had an illegal value, then.info= -iIf: Ifinfo> 0, the leading minor of orderinfo=kk,is not positive definite, and the factorization could not be completed, and the solution has not been computed.A(ia:ia+k-1,ja:ja+k-1)