Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?lagts
Solves the system of equations ( T - lambda * I )* x = y or ( T - lambda * I ) :code:`T` * x = y ,where T is a general tridiagonal matrix and lambda is a scalar, using the LU factorization computed by ?lagtf .
Syntax
call slagts ( job , n , a , b , c , d , in , y , tol , info )
call dlagts ( job , n , a , b , c , d , in , y , tol , info )
Include Files
mkl.fi
Description
slagts dlagts
The routine may be used to solve for x one of the systems of equations:
(T - lambda*I)*x = y or (T - lambda*I)^{T}*x = y ,
where T is an n -by- n tridiagonal matrix, following the factorization of ( T - lambda*I ) as
T - lambda*I = P*L*U ,
computed by the routine ?lagtf (Computes an LU factorization of a matrix T-λ*I, where T is a general tridiagonal matrix, and λ is a scalar, using partial pivoting with row interchanges.) .
The choice of equation to be solved is controlled by the argument job , and in each case there is an option to perturb zero or very small diagonal elements of U , this option being intended for use in applications such as inverse iteration.
Input Parameters
- job
-
INTEGER . Specifies the job to be performed by ?lagts as follows: = 1: The equations (T - lambda*I)x = y are to be solved, but diagonal elements of U are not to be perturbed. = -1: The equations (T - lambda*I)x = y are to be solved and, if overflow would otherwise occur, the diagonal elements of U are to be perturbed. See argument tol below. = 2: The equations (T - lambda*I)^{T}x = y are to be solved, but diagonal elements of U are not to be perturbed. = -2: The equations (T - lambda*I)^{T}x = y are to be solved and, if overflow would otherwise occur, the diagonal elements of U are to be perturbed. See argument tol below.
- n
-
INTEGER . The order of the matrix T ( n≥ 0 ).
- a , b , c , d
-
REAL for slagts DOUBLE PRECISION for dlagts Arrays, dimension a(n), b(n-1), c(n-1), d(n-2): On entry, a (*) must contain the diagonal elements of U as returned from ?lagtf . On entry, b (*) must contain the first super-diagonal elements of U as returned from ?lagtf . On entry, c (*) must contain the sub-diagonal elements of L as returned from ?lagtf . On entry, d (*) must contain the second super-diagonal elements of U as returned from ?lagtf .
- in
-
INTEGER . Array, dimension ( n ). On entry, in (*) must contain details of the matrix p as returned from ?lagtf .
- y
-
REAL for slagts DOUBLE PRECISION for dlagts Array, dimension ( n ). On entry, the right hand side vector y .
- tol
-
REAL for slagtf DOUBLE PRECISION for dlagtf . On entry, with job < 0 , tol should be the minimum perturbation to be made to very small diagonal elements of U . tol should normally be chosen as about eps*norm(U) , where eps is the relative machine precision, but if tol is supplied as non-positive, then it is reset to eps*max( abs( u(i,j) ) ). If job > 0 then tol is not referenced.
Output Parameters
- y
-
On exit, y is overwritten by the solution vector x .
- tol
-
On exit, tol is changed as described in Input Parameters section above, only if tol is non-positive on entry. Otherwise tol is unchanged.
info
INTEGER .
If info = 0 , the execution is successful.
If info = -i , the i -th parameter had an illegal value. If info = i >0 , overflow would occur when computing the i th element of the solution vector x . This can only occur when job is supplied as positive and either means that a diagonal element of U is very small, or that the elements of the right-hand side vector y are very large.