Developer Reference for Intel® oneAPI Math Kernel Library for C
?gtrfs
Refines the solution of a system of linear equations with a tridiagonal coefficient matrix and estimates its error.
Syntax
lapack_int LAPACKE_sgtrfs ( intmatrix_layout , chartrans , lapack_intn , lapack_intnrhs , const float*dl , const float*d , const float*du , const float*dlf , const float*df , const float*duf , const float*du2 , const lapack_int*ipiv , const float*b , lapack_intldb , float*x , lapack_intldx , float*ferr , float*berr );
lapack_int LAPACKE_dgtrfs ( intmatrix_layout , chartrans , lapack_intn , lapack_intnrhs , const double*dl , const double*d , const double*du , const double*dlf , const double*df , const double*duf , const double*du2 , const lapack_int*ipiv , const double*b , lapack_intldb , double*x , lapack_intldx , double*ferr , double*berr );
lapack_int LAPACKE_cgtrfs ( intmatrix_layout , chartrans , lapack_intn , lapack_intnrhs , const lapack_complex_float*dl , const lapack_complex_float*d , const lapack_complex_float*du , const lapack_complex_float*dlf , const lapack_complex_float*df , const lapack_complex_float*duf , const lapack_complex_float*du2 , const lapack_int*ipiv , const lapack_complex_float*b , lapack_intldb , lapack_complex_float*x , lapack_intldx , float*ferr , float*berr );
lapack_int LAPACKE_zgtrfs ( intmatrix_layout , chartrans , lapack_intn , lapack_intnrhs , const lapack_complex_double*dl , const lapack_complex_double*d , const lapack_complex_double*du , const lapack_complex_double*dlf , const lapack_complex_double*df , const lapack_complex_double*duf , const lapack_complex_double*du2 , const lapack_int*ipiv , const lapack_complex_double*b , lapack_intldb , lapack_complex_double*x , lapack_intldx , double*ferr , double*berr );
Include Files
mkl.h
Description
The routine performs an iterative refinement of the solution to a system of linear equations A*X = B or A^{T}*X = B or A:code:`H`*X = B with a tridiagonal matrix A , with multiple right-hand sides. For each computed solution vector x , the routine computes the component-wise backward error \(\beta\) . This error is the smallest relative perturbation in elements of A and b such that x is the exact solution of the perturbed system:
|δa_{ij}|/|a_{ij}| ≤β|a_{ij}|, |δb_{i}|/|b_{i}| ≤β|b_{i}| such that \((A + \delta A)x = (b + \delta b)\) .
Finally, the routine estimates the component-wise forward error in the computed solution \(||x - x_{e}||_{\infty}/||x||_{\infty}\) (here x_{e} is the exact solution).
Before calling this routine:
Input Parameters
matrix_layout
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
trans
Must be ‘N’ or ‘T’ or ‘C’ .
Indicates the form of the equations:
If trans = 'N' , the system has the form A*X = B .
If trans = 'T' , the system has the form A:code:`T`*X = B .
If trans = 'C' , the system has the form A:code:`H`*X = B .
n
The order of the matrix A ; n ≥ 0.
nrhs
The number of right-hand sides, that is, the number of columns of the matrix B ; nrhs ≥ 0.
dl , d , du , dlf , df , duf , du2 , b , x , work
Arrays:
dl , dimension ( n -1), contains the subdiagonal elements of A .
d , dimension ( n ), contains the diagonal elements of A .
du , dimension ( n -1), contains the superdiagonal elements of A .
dlf , dimension ( n -1), contains the ( n - 1) multipliers that define the matrix L from the LU factorization of A as computed by ?gttrf (Computes the LU factorization of a tridiagonal matrix.) .
df , dimension ( n ), contains the n diagonal elements of the upper triangular matrix U from the LU factorization of A .
duf , dimension ( n -1), contains the ( n - 1) elements of the first superdiagonal of U .
du2 , dimension ( n -2), contains the ( n - 2) elements of the second superdiagonal of U .
b(ldb,nrhs) contains the right-hand side matrix B .
x(ldx,nrhs) contains the solution matrix X , as computed by ?gttrs (Solves a system of linear equations with a tridiagonal coefficient matrix using the LU factorization computed by ?gttrf.) .
work(*) is a workspace array; the dimension of work must be at least max(1, 3*n) for real flavors and max(1, 2*n) for complex flavors.
dl
Array dl of size n -1 contains the subdiagonal elements of A .
d
Array d of size n contains the diagonal elements of A .
du
Array du of size n -1 contains the superdiagonal elements of A .
dlf
Array dlf of size n -1 contains the ( n - 1) multipliers that define the matrix L from the LU factorization of A as computed by ?gttrf (Computes the LU factorization of a tridiagonal matrix.) .
df
Array df of size n contains the n diagonal elements of the upper triangular matrix U from the LU factorization of A .
duf
Array duf of size n -1 contains the ( n - 1) elements of the first superdiagonal of U .
du2
Array du2 of size n -2 contains the ( n - 2) elements of the second superdiagonal of U .
b
Array b (size max(1, ldb * nrhs ) for column major layout and max(1, ldb * n ) for row major layout) contains the right-hand side matrix B .
x
Array x (size max(1, ldx * nrhs ) for column major layout and max(1, ldx * n ) contains the solution matrix X , as computed by ?gttrs (Solves a system of linear equations with a tridiagonal coefficient matrix using the LU factorization computed by ?gttrf.) .
ldb
The leading dimension of b ; ldb≥ max(1, n)ldb ≥ max(1, n ) for column major layout and ldb ≥ nrhs for row major layout .
ldx
The leading dimension of x ; ldx≥ max(1, n)ldx ≥ max(1, n ) for column major layout and ldx ≥ nrhs for row major layout .
ipiv
Array, size at least max(1, n) . The ipiv array, as returned by ?gttrf (Computes the LU factorization of a tridiagonal matrix.) .
iwork
Workspace array, size ( n ). Used for real flavors only.
rwork
Workspace array, size ( n ). Used for complex flavors only.
Output Parameters
x
The refined solution matrix X .
ferr , berr
Arrays, size at least max(1,nrhs) . Contain the component-wise forward and backward errors, respectively, for each solution vector.
Return Values
This function returns a value info .
If info = 0 , the execution is successful.
If info = -i , parameter i had an illegal value.
LAPACK 95 Interface Notes
There exist FORTRAN 77 and FORTRAN 95 interfaces for this routine. See the Intel® oneMKL Fortran Developer Reference for details.