p?pttrs
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
The
p?pttrs
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
function
uses the factorization sub(*, or sub(*
A
) = P
*L
*D
*L
H
P
T
A
) = P
*U
H
D
*U
*P
T
computed by
p?pttrf
. Input Parameters
- uplo
- (global, used in complex flavors only)Must be'U'or'L'.If, upper triangle of sub(uplo='U'A) is stored;If, lower triangle of sub(uplo='L'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)Pointers into the local memory to arrays of sizeeach.nb_aThese arrays contain details of the factorization as returned byp?pttrf
- ja
- (global) The index in the global matrixAindicating the start of the matrix to be operated on (which may be either all ofAor a submatrix ofA).
- desca
- (global and local) array of sizedlen_. The array descriptor for the distributed matrixA.Ifordtype_a= 501, thendtype_a= 502;dlen_≥7else if, thendtype_a= 1.dlen_≥9
- b
- (local) Same type asd,e.Pointer into the local memory to an array of local size.lld_b*LOCc(nrhs)On entry, the arraybcontains the local pieces of then-by-nrhsright hand side distributed matrix sub(B).
- ib
- (global) The row index in the global matrixBindicating the first row of the matrix to be operated on (which may be either all ofBor a submatrix ofB).
- descb
- (global and local) array of sizedlen_. The array descriptor for the distributed matrixB.If, thendtype_b= 502;dlen_≥7else if, thendtype_b= 1.dlen_≥9
- af,work
- (local)Arrays of sizelafand (lwork), respectively. The arrayafcontains auxiliary fill-in space. The fill-in space is created in a call to the factorizationfunctionp?pttrfand is stored inaf.The arrayworkis a workspace array.
- laf
- (local) The size of the arrayaf.Must be.laf≥nb_a+2Iflafis not large enough, an error code is returned and the minimum acceptable size will be returned inaf[0].
- lwork
- (local or global) The size of the arraywork, must be at leastlwork≥(10+2*min(100,nrhs))*NPCOL+4*nrhs.
Output Parameters
- b
- On exit, this array contains the local pieces of the solution distributed matrixX.
- work[0])
- On exit,contains the minimum value ofwork[0]lworkrequired for optimum performance.
- info
- If, the execution is successful.info=0if the:info< 0i-th argument is an array and thej-th entry, indexedhad an illegal value, thenj- 1,info= -(i*100+j); if thei-th argument is a scalar and had an illegal value, theninfo=-i.