Developer Reference for Intel® oneAPI Math Kernel Library for C
p?dttrsv
Computes an LU factorization of a general band matrix, using partial pivoting with row interchanges. The routine function is called by p?dttrs .
Syntax
void psdttrsv(char *uplo, 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);
void pddttrsv(char *uplo, 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);
void pcdttrsv(char *uplo, 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);
void pzdttrsv(char *uplo, 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
psdttrsv pddttrsv pcdttrsv pzdttrsv The p?dttrsv routine function solves a tridiagonal triangular system of linear equations
A(1 :n, ja:ja+n-1)*X = B(ib:ib+n-1, 1 :nrhs) or
A(1 :n, ja:ja+n-1)^{T} * X = B(ib:ib+n-1, 1 :nrhs) for real flavors; A(1 :n, ja:ja+n-1)^{H}* X = B(ib:ib+n-1, 1 :nrhs) for complex flavors,
where A(1 :n, ja:ja+n-1) is a tridiagonal matrix factor produced by the Gaussian elimination code of p?dttrf (Computes the LU factorization of a diagonally dominant-like tridiagonal distributed matrix.) and is stored in A(1 :n, ja:ja+n-1) and af .
The matrix stored in A(1 :n, ja:ja+n-1) is either upper or lower triangular according to uplo , and the choice of solving A(1 :n, ja:ja+n-1) or A(1 :n, ja:ja+n-1)^{T} is dictated by the user by the parameter trans .
The routine The function p?dttrf must be called first.
Input Parameters
uplo
(global)
If uplo='U' , the upper triangle of A(1:n, ja:ja+n-1) is stored, if uplo = 'L' , the lower triangle of A (1: n , ja:ja+n-1) is stored.
trans
(global)
If trans = 'N' , solve with A(1:n, ja:ja+n-1) , if trans = 'C' , solve with conjugate transpose A(1:n, ja:ja+n-1) .
n
(global) The order of the distributed submatrix A;(n≥ 0) .
nrhs
(global) The number of right-hand sides; the number of columns of the distributed submatrix B(ib:ib+n-1, 1:nrhs) . (nrhs≥ 0) .
- dl
-
(local). REAL for psdttrsv DOUBLE PRECISION for pddttrsv COMPLEX for pcdttrsv COMPLEX*16 for pzdttrsv . Pointer to local part of global vector storing the lower diagonal of the matrix.
Globally, dl(1)dl[0] is not referenced, and dl must be aligned with d .
Must be of size ≥nb_a.
- d
-
(local). REAL for psdttrsv DOUBLE PRECISION for pddttrsv COMPLEX for pcdttrsv COMPLEX*16 for pzdttrsv . Pointer to local part of global vector storing the main diagonal of the matrix.
- du
-
(local). REAL for psdttrsv DOUBLE PRECISION for pddttrsv COMPLEX for pcdttrsv COMPLEX*16 for pzdttrsv . Pointer to local part of global vector storing the upper diagonal of the matrix.
Globally, du [ n -1] is not referenced, and du must be aligned with d .
ja
(global) The index in the global matrix A that points to 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_ .
if 1 d type (dtype_a = 501 or 502) , dlen≥ 7 ; if 2 d type (dtype_a = 1) , dlen≥ 9 . The array descriptor for the distributed matrix A . Contains information of mapping of A to memory.
- b
-
(local) REAL for psdttrsv DOUBLE PRECISION for pddttrsv COMPLEX for pcdttrsv COMPLEX*16 for pzdttrsv . Pointer into the local memory to an array of local lead dimension lld_b ≥ nb . On entry, this array contains the local pieces of the right-hand sides B(ib:ib+n-1, 1 :nrhs) .
ib
(global) The row index in the global matrix B that points to 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_ .
if 1 d type (dtype_b = 502) , dlen≥7 ; if 2 d type (dtype_b = 1) , dlen≥ 9 . The array descriptor for the distributed matrix B . Contains information of mapping B to memory.
- laf
-
(local). INTEGER . Size of user-input auxiliary fill-in space af .
laf≥ 2*(nb+2) . If laf is not large enough, an error code is returned and the minimum acceptable size will be returned in af(1)af[0] .
- work
-
(local). REAL for psdttrsv DOUBLE PRECISION for pddttrsv COMPLEX for pcdttrsv COMPLEX*16 for pzdttrsv .
Temporary workspace. This space may be overwritten in between function calls .
work must be the size given in lwork .
lwork
(local or global)
Size of user-input workspace work . If lwork is too small, the minimal acceptable size will be returned in work(1)work[0] and an error code is returned.
lwork≥ 10*npcol+4*nrhs .
Output Parameters
- dl
-
(local). On exit, this array contains information containing the factors of the matrix.
- d
-
On exit, this array contains information containing the factors of the matrix. Must be of size ≥ nb_a .
- b
-
On exit, this contains the local piece of the solutions distributed matrix X.
- af
-
(local). REAL for psdttrsv DOUBLE PRECISION for pddttrsv COMPLEX for pcdttrsv COMPLEX*16 for pzdttrsv .
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 after the factorization.
work
On exit, work(1)work[0] contains the minimal lwork .
info
(local).
If info =0, the execution is successful.