Developer Reference for Intel® oneAPI Math Kernel Library for C
p?pttrs
Solves a system of linear equations with a symmetric (Hermitian) positive-definite tridiagonal distributed matrix using the factorization computed by p?pttrf .
Syntax
voidpspttrs ( MKL_INT*n , MKL_INT*nrhs , float*d , float*e , MKL_INT*ja , MKL_INT*desca , float*b , MKL_INT*ib , MKL_INT*descb , float*af , MKL_INT*laf , float*work , MKL_INT*lwork , MKL_INT*info );
voidpdpttrs ( MKL_INT*n , MKL_INT*nrhs , double*d , double*e , MKL_INT*ja , MKL_INT*desca , double*b , MKL_INT*ib , MKL_INT*descb , double*af , MKL_INT*laf , double*work , MKL_INT*lwork , MKL_INT*info );
voidpcpttrs ( char*uplo , MKL_INT*n , MKL_INT*nrhs , float*d , MKL_Complex8*e , MKL_INT*ja , MKL_INT*desca , MKL_Complex8*b , MKL_INT*ib , MKL_INT*descb , MKL_Complex8*af , MKL_INT*laf , MKL_Complex8*work , MKL_INT*lwork , MKL_INT*info );
voidpzpttrs ( char*uplo , MKL_INT*n , MKL_INT*nrhs , double*d , MKL_Complex16*e , MKL_INT*ja , MKL_INT*desca , MKL_Complex16*b , MKL_INT*ib , MKL_INT*descb , MKL_Complex16*af , MKL_INT*laf , MKL_Complex16*work , MKL_INT*lwork , MKL_INT*info );
Include Files
mkl_scalapack.h
Description
pspttrs pdpttrs pcpttrs pzpttrs The p?pttrs routine function solves for X a system of distributed linear equations in the form:
sub( A )* X = sub( B ) ,
where sub( A ) = A (1: n , ja : ja + n -1) is an n -by- n real symmetric or complex Hermitian positive definite tridiagonal distributed matrix, and sub( B ) denotes the distributed matrix B ( ib : ib + n -1, 1: nrhs ).
This routine function uses the factorization
sub( A ) = P * L * D * L:code:`H` * P:code:`T` , or sub( A ) = P * U:code:`H` * D * U * P:code:`T`
computed by p?pttrf (Computes the Cholesky factorization of a symmetric (Hermitian) positive-definite tridiagonal distributed matrix.) .
Input Parameters
- uplo
-
(global, used in complex flavors only)
Must be ‘U’ or ‘L’ .
If uplo = 'U' , upper triangle of sub( A ) is stored; If uplo = 'L' , lower triangle of sub( A ) is stored.
n
(global) The order of the distributed matrix sub( A ) (n≥0) .
nrhs
(global) The number of right hand sides; the number of columns of the distributed matrix sub( B ) (nrhs≥0) .
- d , e
-
(local) REAL for pspttrs DOUBLE PRECISON for pdpttrs COMPLEX for pcpttrs DOUBLE COMPLEX for pzpttrs . Pointers into the local memory to arrays of size nb_a each. These arrays contain details of the factorization as returned by p?pttrf
ja
(global) The index in the global matrix A indicating the start of the matrix to be operated on (which may be either all of A or a submatrix of A ).
desca
(global and local) array of size dlen_ . The array descriptor for the distributed matrix A .
If dtype_a = 501 or dtype_a = 502 , then dlen_≥ 7 ; else if dtype_a = 1 , then dlen_≥ 9 .
- b
-
(local) Same type as d , e . Pointer into the local memory to an array of local size
(lld_b,LOCc(nrhs))lld_b * LOCc ( nrhs ) .
On entry, the array b contains the local pieces of the n -by- nrhs right hand side distributed matrix sub( B ).
ib
(global) The row index in the global matrix B indicating the first row of the matrix to be operated on (which may be either all of B or a submatrix of B ).
descb
(global and local) array of size dlen_ . The array descriptor for the distributed matrix B .
If dtype_b = 502 , then dlen_≥ 7 ; else if dtype_b = 1 , then dlen_≥ 9 .
af , work
(local)
DOUBLE PRECISION for pdpttrs COMPLEX for pcpttrs DOUBLE COMPLEX for pzpttrs .
Arrays of size laf and ( lwork ), respectively. The array af contains auxiliary fill-in space. The fill-in space is created in a call to the factorization function p?pttrf and is stored in af .
The array work is a workspace array.
laf
(local) The size of the array af .
Must be laf≥nb_a+2 .
If laf is not large enough, an error code is returned and the minimum acceptable size will be returned in af [0] .
lwork
(local or global) The size of the array work , must be at least
lwork ≥ (10+2* min (100, nrhs ))* NPCOL +4* nrhs .
Output Parameters
- b
-
On exit, this array contains the local pieces of the solution distributed matrix X .
work(1)[0])
On exit, work(1)[0] contains the minimum value of lwork required for optimum performance.
info
If info=0 , the execution is successful.
info < 0 :