Developer Reference for Intel® oneAPI Math Kernel Library for C
?gbrfs
Refines the solution of a system of linear equations with a general band coefficient matrix and estimates its error.
Syntax
lapack_int LAPACKE_sgbrfs ( intmatrix_layout , chartrans , lapack_intn , lapack_intkl , lapack_intku , lapack_intnrhs , const float*ab , lapack_intldab , const float*afb , lapack_intldafb , const lapack_int*ipiv , const float*b , lapack_intldb , float*x , lapack_intldx , float*ferr , float*berr );
lapack_int LAPACKE_dgbrfs ( intmatrix_layout , chartrans , lapack_intn , lapack_intkl , lapack_intku , lapack_intnrhs , const double*ab , lapack_intldab , const double*afb , lapack_intldafb , const lapack_int*ipiv , const double*b , lapack_intldb , double*x , lapack_intldx , double*ferr , double*berr );
lapack_int LAPACKE_cgbrfs ( intmatrix_layout , chartrans , lapack_intn , lapack_intkl , lapack_intku , lapack_intnrhs , const lapack_complex_float*ab , lapack_intldab , const lapack_complex_float*afb , lapack_intldafb , const lapack_int*ipiv , const lapack_complex_float*b , lapack_intldb , lapack_complex_float*x , lapack_intldx , float*ferr , float*berr );
lapack_int LAPACKE_zgbrfs ( intmatrix_layout , chartrans , lapack_intn , lapack_intkl , lapack_intku , lapack_intnrhs , const lapack_complex_double*ab , lapack_intldab , const lapack_complex_double*afb , lapack_intldafb , 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
sgbrfs dgbrfs cgbrfs zgbrfs gbrfs
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 band 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:
\(|\delta a_{ij}| \leq \beta|a_{ij}|, |\delta b_{i}| \leq \beta|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.
kl
The number of sub-diagonals within the band of A ; kl ≥ 0.
ku
The number of super-diagonals within the band of A ; ku ≥ 0.
nrhs
The number of right-hand sides; nrhs ≥ 0.
ab , afb , b , x , work
Arrays:
ab (size max(1, ldab * n )) contains the original band matrix A , as supplied to GUID-03E2AA41-0886-485D-B0D7-1C2186119220.xml#GUID-03E2AA41-0886-485D-B0D7-1C2186119220 , but stored in rows from 1 to kl + ku + 1 for column major layout, and columns from 1 to kl + ku + 1 for row major layout .
afb (size max(1, ldafb * n )) contains the factored band matrix A , as returned by GUID-03E2AA41-0886-485D-B0D7-1C2186119220.xml#GUID-03E2AA41-0886-485D-B0D7-1C2186119220 .
b of 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 of size max(1, ldx * nrhs ) for column major layout and max(1, ldx * n ) for row major layout contains the solution matrix X .
ldab
The leading dimension of ab , ldab ≥ kl + ku + 1 .
ldafb
The leading dimension of afb , ldafb ≥ 2* kl + ku + 1 .
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) .
ipiv
Array, size at least max(1, n) . The ipiv array, as returned by ?gbtrf (Computes the LU factorization of a general m-by-n band matrix.) .
iwork
Workspace array, size at least max(1, n) .
rwork
Workspace array, size at least max(1, n) .
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.
Application Notes
The bounds returned in ferr are not rigorous, but in practice they almost always overestimate the actual error.
For each right-hand side, computation of the backward error involves a minimum of 4 n ( kl + ku ) floating-point operations (for real flavors) or 16 n ( kl + ku ) operations (for complex flavors). In addition, each step of iterative refinement involves 2 n (4 kl + 3 ku ) operations (for real flavors) or 8 n (4 kl + 3 ku ) operations (for complex flavors); the number of iterations may range from 1 to 5. Estimating the forward error involves solving a number of systems of linear equations \(A x = b\) ; the number is usually 4 or 5 and never more than 11. Each solution requires approximately \(2n^{2}\) floating-point operations for real flavors or \(8n^{2}\) for complex flavors.