Developer Reference for Intel® oneAPI Math Kernel Library for C
p?dttrs
Solves a system of linear equations with a diagonally dominant-like tridiagonal distributed matrix using the factorization computed by p?dttrf .
Syntax
voidpsdttrs ( char*trans , MKL_INT*n , MKL_INT*nrhs , float*dl , float*d , float*du , 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 );
voidpddttrs ( char*trans , MKL_INT*n , MKL_INT*nrhs , double*dl , double*d , double*du , 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 );
voidpcdttrs ( char*trans , MKL_INT*n , MKL_INT*nrhs , MKL_Complex8*dl , MKL_Complex8*d , MKL_Complex8*du , 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 );
voidpzdttrs ( char*trans , MKL_INT*n , MKL_INT*nrhs , MKL_Complex16*dl , MKL_Complex16*d , MKL_Complex16*du , 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
psdttrs pddttrs pcdttrs pzdttrs The p?dttrs routine function solves for X one of the systems of equations:
sub( A )* X = sub( B ),
(sub( A )) :code:`T` * X = sub( B ), or
(sub( A )) :code:`H` * X = sub( B ),
where sub( A ) = A (1: n , ja : ja + n -1) is a diagonally dominant-like tridiagonal distributed matrix, and sub( B ) denotes the distributed matrix B ( ib : ib + n -1, 1: nrhs ).
This routine function uses the LU factorization computed by p?dttrf (Computes the LU factorization of a diagonally dominant-like tridiagonal distributed matrix.) .
Input Parameters
trans
(global) Must be ‘N’ or ‘T’ or ‘C’ .
Indicates the form of the equations: If trans = 'N' , then sub( A )* X = sub( B ) is solved for X . If trans = 'T' , then (sub( A )) :code:`T` * X = sub( B ) is solved for X . If trans = 'C' , then (sub( A )) :code:`H` * X = sub( B ) is solved for X .
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) .
- dl , d , du
-
(local) REAL for psdttrs DOUBLE PRECISON for pddttrs COMPLEX for pcdttrs DOUBLE COMPLEX for pzdttrs . Pointers to the local arrays of size nb_a each.
On entry, these arrays contain details of the factorization. Globally, dl [0] and du [ n -1] are not referenced; dl and du must be aligned with d .
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 .
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 pddttrs COMPLEX for pcdttrs DOUBLE COMPLEX for pzdttrs . 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?dttrf and is stored in af . If a linear system is to be solved using p?dttrs after the factorization function , af must not be altered.
The array work is a workspace array.
laf
(local) The size of the array af .
Must be laf≥NB*(bwl+bwu)+6*(bwl+bwu)*(bwl+2*bwu) .
If laf is not large enough, an error code will be 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*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 :
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 .