Developer Reference for Intel® oneAPI Math Kernel Library for C
p?dbtrsv
Computes an LU factorization of a general triangular matrix with no pivoting. The routine function is called by p?dbtrs .
Syntax
voidpsdbtrsv ( char*uplo , char*trans , MKL_INT*n , MKL_INT*bwl , MKL_INT*bwu , MKL_INT*nrhs , float*a , 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 );
voidpddbtrsv ( char*uplo , char*trans , MKL_INT*n , MKL_INT*bwl , MKL_INT*bwu , MKL_INT*nrhs , double*a , 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 );
voidpcdbtrsv ( char*uplo , char*trans , MKL_INT*n , MKL_INT*bwl , MKL_INT*bwu , MKL_INT*nrhs , MKL_Complex8*a , 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 );
voidpzdbtrsv ( char*uplo , char*trans , MKL_INT*n , MKL_INT*bwl , MKL_INT*bwu , MKL_INT*nrhs , MKL_Complex16*a , 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
psdbtrsv pddbtrsv pcdbtrsv pzdbtrsv The p?dbtrsv routine function solves a banded 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):code:`T` * X = B ( ib : ib + n -1, 1 : nrhs ) (for real flavors); A (1 : n , ja:ja+n-1):code:`H` * X = B ( ib : ib + n -1, 1 : nrhs ) (for complex flavors),
where A (1 : n , ja:ja+n-1) is a banded triangular matrix factor produced by the Gaussian elimination code of p?dbtrf (Computes the LU factorization of a n-by-n diagonally dominant-like banded 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):code:`T` is dictated by the user by the parameter trans .
The routine The function p?dbtrf 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).
bwl
(global) Number of subdiagonals. 0 ≤ bwl ≤ n -1.
bwu
(global) Number of subdiagonals. 0 ≤ bwu ≤ n -1.
nrhs
(global) The number of right-hand sides; the number of columns of the distributed submatrix B ( nrhs ≥ 0).
- a
-
(local). REAL for psdbtrsv DOUBLE PRECISION for pddbtrsv COMPLEX for pcdbtrsv COMPLEX*16 for pzdbtrsv .
Pointer into the local memory to an array of size lld_a * LOCc ( ja + n -1) , where lld_a ≥ ( bwl + bwu +1). On entry, this array contains the local pieces of the n -by- n unsymmetric banded distributed Cholesky factor L or L:code:`T` , represented in global A as A (1 : n , ja:ja+n-1) . This local portion is stored in the packed banded format used in LAPACK. See the Application Notes below and the ScaLAPACK manual for more detail on the format of distributed matrices.
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 psdbtrsv DOUBLE PRECISION for pddbtrsv COMPLEX for pcdbtrsv COMPLEX*16 for pzdbtrsv . 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 1d type (dtype_b =502) , dlen≥7; if 2d type (dtype_b =1) , dlen≥9 . The array descriptor for the distributed matrix B . Contains information of mapping B to memory.
- laf
-
(local)
Size of user-input auxiliary fill-in space af .
laf≥nb*(bwl+bwu)+6*max(bwl, bwu)*max(bwl, bwu) . 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 psdbtrsv DOUBLE PRECISION for pddbtrsv COMPLEX for pcdbtrsv COMPLEX*16 for pzdbtrsv .
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≥ max(bwl, bwu)*nrhs .
Output Parameters
- a
-
(local). This local portion is stored in the packed banded format used in LAPACK. Please see the ScaLAPACK manual for more detail on the format of distributed matrices.
- b
-
On exit, this contains the local piece of the solutions distributed matrix X .
- af
-
(local). REAL for psdbtrsv DOUBLE PRECISION for pddbtrsv COMPLEX for pcdbtrsv COMPLEX*16 for pzdbtrsv .
auxiliary fill-in space. The fill-in space is created in a call to the factorization function p?dbtrf and is stored in af . If a linear system is to be solved using p?dbtrf 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.
< 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 .