Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
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
call pspttrsv(uplo, n, nrhs, d, e, ja, desca, b, ib, descb, af, laf, work, lwork, info)
call pdpttrsv(uplo, n, nrhs, d, e, ja, desca, b, ib, descb, af, laf, work, lwork, info)
call pcpttrsv(uplo, trans, n, nrhs, d, e, ja, desca, b, ib, descb, af, laf, work, lwork,
info)
call pzpttrsv(uplo, trans, n, nrhs, d, e, ja, desca, b, ib, descb, af, laf, work, lwork,
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) CHARACTER . 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) CHARACTER . 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) INTEGER .
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) INTEGER .
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) INTEGER . 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) INTEGER 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) INTEGER . 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) INTEGER 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)
INTEGER . 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 calls to routines .
lwork
(local or global) INTEGER . 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 routine 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 routine , 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) INTEGER .
= 0 : successful exit
< 0 : if the i -th argument is an array and the j -th entry 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 .