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
void pspttrs(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);
void pdpttrs(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);
void pcpttrs(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);
void pzpttrs(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 * LH * PT , or sub( A ) = P * UH * D * U * PT
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 :