Developer Reference for Intel® oneAPI Math Kernel Library for C
p?posv
Solves a symmetric positive definite system of linear equations.
Syntax
voidpsposv ( 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 );
voidpdposv ( 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 );
voidpcposv ( 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 );
voidpzposv ( 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
psposv pdposv pcposv pzposv The p?posv routine function 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) = U^{T}*U , if uplo = 'U' , or
sub(A) = L*L^{T} , 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) 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) 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))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) 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) 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))lld_b * LOCc ( jb + nrhs -1) . On entry, the local pieces of the right hand sides distributed matrix sub( B ).
ib , jb
(global) 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) 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) = U^{H}*U , or L*L:code:`H` .
- b
-
On exit, if info = 0 , sub( B ) is overwritten by the solution distributed matrix X .
info
(global)
If info =0 , the execution is successful.
If info < 0 : If the i -th argument is an array and the j -th entry , indexed j -1, 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.