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
voidpsdttrsv ( 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 );
voidpddttrsv ( 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 );
voidpcdttrsv ( 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 );
voidpzdttrsv ( 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.