Developer Reference for Intel® oneAPI Math Kernel Library for C
?pbtrs
Solves a system of linear equations with a Cholesky-factored symmetric (Hermitian) positive-definite band coefficient matrix.
Syntax
lapack_int LAPACKE_spbtrs(int matrix_layout, char uplo, lapack_int n, lapack_int kd,
lapack_int nrhs, const float *ab, lapack_int ldab, float *b,
lapack_int ldb);
lapack_int LAPACKE_dpbtrs(int matrix_layout, char uplo, lapack_int n, lapack_int kd,
lapack_int nrhs, const double *ab, lapack_int ldab, double *b,
lapack_int ldb);
lapack_int LAPACKE_cpbtrs(int matrix_layout, char uplo, lapack_int n, lapack_int kd,
lapack_int nrhs, const lapack_complex_float *ab,
lapack_int ldab, lapack_complex_float *b, lapack_int ldb);
lapack_int LAPACKE_zpbtrs(int matrix_layout, char uplo, lapack_int n, lapack_int kd,
lapack_int nrhs, const lapack_complex_double *ab,
lapack_int ldab, lapack_complex_double *b, lapack_int ldb);
Include Files
mkl.h
Description
The routine solves for real data a system of linear equations \(A*X = B\) with a symmetric positive-definite or, for complex data, Hermitian positive-definite band matrix \(A\) , given the Cholesky factorization of \(A\) :
\(A = U^{T}*U\) for real data, \(A = U^{H}*U\) for complex data |
if uplo='U' |
\(A = L*L^{T}\) for real data, \(A = L*L^{H}\) for complex data |
if uplo='L' |
where \(L\) is a lower triangular matrix and \(U\) is upper triangular. The system is solved with multiple right-hand sides stored in the columns of the matrix \(B\) .
Before calling this routine, you must call ?pbtrf (Computes the Cholesky factorization of a symmetric (Hermitian) positive-definite band matrix.) to compute the Cholesky factorization of \(A\) in the band storage form.
Input Parameters
matrix_layout
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
uplo
Must be ‘U’ or ‘L’ .
Indicates how the input matrix A has been factored:
If uplo = 'U' , U is stored in ab , where \(A = U^T * U\) for real matrices and \(A = U^H * U\) for complex matrices.
If uplo = 'L' , L is stored in ab , where \(A = L * L^T\) for real matrices and \(A = L * L^H\) for complex matrices.
- n
-
Specifies the order of the matrix A . The value of n must be at least zero.
kd
The number of superdiagonals or subdiagonals in the matrix A ; kd ≥ 0.
nrhs
The number of right-hand sides; nrhs ≥ 0.
ab , b
Array ab is of size max (1, ldab * n ).
The array ab contains the Cholesky factor, as returned by the factorization routine, in band storage form.
The array b contains the matrix B whose columns are the right-hand sides for the systems of equations.
b
The array b contains the matrix B whose columns are the right-hand sides for the systems of equations.
The size of b is at least max(1, ldb * nrhs ) for column major layout and max(1, ldb * n ) for row major layout.
ldab
The leading dimension of the array ab ; ldab ≥ kd +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 .
Output Parameters
b
Overwritten by the solution matrix X .
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
For each right-hand side \(b\) , the computed solution is the exact solution of a perturbed system of equations \((A + E)x = b\) , where
\[|E| \leq c(kd+1) \varepsilon P|U||D||U^{H}|P^{T} or |E| \le c(n) \varepsilon P|L||D||L^{H}|P^{T}\]
\(c(n)\) is a modest linear function of \(k\) , and \(\varepsilon\) is the machine precision.
If \(x_{0}\) is the true solution, the computed solution \(x\) satisfies this error bound:
\[\frac{\|x - x_0\|_\infty}{\|x\|_\infty} \leq c(kd+1) \operatorname{cond}(A, x) \varepsilon\]
where
\[\operatorname{cond}(A,x) = || |A^{-1}| |A| |x|_\infty || / ||x||_\infty \leq ||A^{-1}||_\infty ||A||_\infty = \kappa_\infty(A).\]
Note that \(\operatorname{cond}(A,x)\) can be much smaller than \(\kappa_{\infty}(A)\) .
The approximate number of floating-point operations for one right-hand side vector is \(4*n*kd\) for real flavors and \(16*n*kd\) for complex flavors.
To estimate the condition number \(\kappa_{\infty}(A)\) , call ?pbcon (Estimates the reciprocal of the condition number of a symmetric (Hermitian) positive-definite band matrix.) .
To refine the solution and estimate the error, call ?pbrfs (Refines the solution of a system of linear equations with a band symmetric (Hermitian) positive-definite coefficient matrix and estimates its error.) .