Developer Reference for Intel® oneAPI Math Kernel Library for C
p?pttrsv
Solves a single triangular linear system via frontsolve or backsolve where the triangular matrix is a factor of a tridiagonal matrix computed by p?pttrf .
Syntax
voidpspttrsv ( char*uplo , 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 );
voidpdpttrsv ( char*uplo , 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 );
voidpcpttrsv ( char*uplo , char*trans , 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 );
voidpzpttrsv ( char*uplo , char*trans , 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
pspttrsv pdpttrsv pcpttrsv pzpttrsv The p?pttrsv routine function solves a tridiagonal triangular system of linear equations
A(1:n, ja:ja+n-1)*X = B(jb:jb+n-1, 1:nrhs)
or
A(1:n, ja:ja+n-1)^{T}*X = B(jb:jb+n-1, 1:nrhs) for real flavors,
A(1:n, ja:ja+n-1)^{H}*X = B(jb:jb+n-1, 1:nrhs) for complex flavors,
where A(1:n, ja:ja+n-1) is a tridiagonal triangular matrix factor produced by the Cholesky factorization code p?pttrf (Computes the Cholesky factorization of a symmetric (Hermitian) positive-definite 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 .
The routine The function p?pttrf (Computes the Cholesky factorization of a symmetric (Hermitian) positive-definite tridiagonal distributed matrix.) must be called first.
Input Parameters
uplo
(global) Must be ‘U’ or ‘L’ .
If uplo = 'U' , upper triangle of A(1:n, ja:ja+n-1) is stored; If uplo = 'L' , lower triangle of A(1:n, ja:ja+n-1) is stored.
trans
(global) Must be ‘N’ or ‘C’ .
If trans = 'N' , solve with A(1:n, ja:ja+n-1) ; If trans = ‘C’ (for complex flavors), solve with conjugate transpose ( A(1:n, ja:ja+n-1) ) ^{H} .
n
(global)
The number of rows and columns to be operated on, that is, the order of the distributed submatrix A(1:n, ja:ja+n-1) . n ≥ 0 .
nrhs
(global)
The number of right hand sides; the number of columns of the distributed submatrix B ( jb : jb+n -1, 1: nrhs ); nrhs ≥ 0 .
- d
-
(local) REAL for pspttrsv DOUBLE PRECISION for pdpttrsv COMPLEX for pcpttrsv COMPLEX*16 for pzpttrsv . Pointer to the local part of the global vector storing the main diagonal of the matrix; must be of size ≥ nb_a .
- e
-
(local) REAL for pspttrsv DOUBLE PRECISION for pdpttrsv COMPLEX for pcpttrsv COMPLEX*16 for pzpttrsv . Pointer to the local part of the global vector du storing the upper diagonal of the matrix; must be of size ≥ nb_a . Globally, du ( n ) 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_ . The array descriptor for the distributed matrix A .
If 1D type (dtype_a = 501 or 502) , then dlen ≥ 7 ; If 2D type (dtype_a = 1) , then dlen ≥ 9 . Contains information on mapping of A to memory. See ScaLAPACK manual for full description and options.
- b
-
(local) REAL for pspttrsv DOUBLE PRECISION for pdpttrsv COMPLEX for pcpttrsv COMPLEX*16 for pzpttrsv . Pointer into the local memory to an array of local lead size lld_b ≥ nb . On entry, this array contains the local pieces of the right hand sides B(jb:jb+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_ . The array descriptor for the distributed matrix B .
If 1D type (dtype_b = 502) , then dlen ≥ 7 ; If 2D type (dtype_b = 1) , then dlen ≥ 9 . Contains information on mapping of B to memory. See ScaLAPACK manual for full description and options.
- laf
-
(local)
The size of user-input auxiliary fill-in space af . Must be laf ≥ (nb+2*bw)*bw .
If laf is not large enough, an error code will be returned and the minimum acceptable size will be returned in af(1)[0] .
- work
-
(local) REAL for pspttrsv DOUBLE PRECISION for pdpttrsv COMPLEX for pcpttrsv COMPLEX*16 for pzpttrsv .
The array work is a temporary workspace array of size lwork . This space may be overwritten in between function calls .
lwork
(local or global) The size of the user-input workspace work , must be at least lwork ≥(10+2*min(100, nrhs))*npcol+4*nrhs . If lwork is too small, the minimal acceptable size will be returned in work(1)[0] and an error code is returned.
Output Parameters
- d , e
-
(local). REAL for pspttrsv DOUBLE PRECISION for pdpttrsv COMPLEX for pcpttrsv COMPLEX*16 for pzpttrsv . On exit, these arrays contain information on the factors of the matrix.
- af
-
(local) REAL for pspttrsv DOUBLE PRECISION for pdpttrsv COMPLEX for pcpttrsv COMPLEX*16 for pzpttrsv .
The array af is of size laf . It contains auxiliary fill-in space. The fill-in space is created in a call to the factorization function GUID-A864A295-588C-4FCE-8894-C9F3B5647401.xml#GUID-A864A295-588C-4FCE-8894-C9F3B5647401 and is stored in af . If a linear system is to be solved using GUID-BC6488AC-0F55-43DC-AAA2-ADB941937ACD.xml#GUID-BC6488AC-0F55-43DC-AAA2-ADB941937ACD after the factorization function , af must not be altered after the factorization.
- b
-
On exit, this array contains the local piece of the solutions distributed matrix X .
- work (1) [0]
-
On exit, work(1)[0] contains the minimum value of lwork .
info
(local)
= 0 : successful exit
< 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 .