NAG Library Routine Document
F07BRF (ZGBTRF)
1 Purpose
F07BRF (ZGBTRF) computes the LU factorization of a complex m by n band matrix.
2 Specification
INTEGER |
M, N, KL, KU, LDAB, IPIV(min(M,N)), INFO |
COMPLEX (KIND=nag_wp) |
AB(LDAB,*) |
|
The routine may be called by its
LAPACK
name zgbtrf.
3 Description
F07BRF (ZGBTRF) forms the LU factorization of a complex m by n band matrix A using partial pivoting, with row interchanges. Usually m=n, and then, if A has kl nonzero subdiagonals and ku nonzero superdiagonals, the factorization has the form A=PLU, where P is a permutation matrix, L is a lower triangular matrix with unit diagonal elements and at most kl nonzero elements in each column, and U is an upper triangular band matrix with kl+ku superdiagonals.
Note that L is not a band matrix, but the nonzero elements of L can be stored in the same space as the subdiagonal elements of A. U is a band matrix but with kl additional superdiagonals compared with A. These additional superdiagonals are created by the row interchanges.
4 References
Golub G H and Van Loan C F (1996)
Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore
5 Parameters
- 1: M – INTEGERInput
On entry: m, the number of rows of the matrix A.
Constraint:
M≥0.
- 2: N – INTEGERInput
On entry: n, the number of columns of the matrix A.
Constraint:
N≥0.
- 3: KL – INTEGERInput
On entry: kl, the number of subdiagonals within the band of the matrix A.
Constraint:
KL≥0.
- 4: KU – INTEGERInput
On entry: ku, the number of superdiagonals within the band of the matrix A.
Constraint:
KU≥0.
- 5: AB(LDAB,*) – COMPLEX (KIND=nag_wp) arrayInput/Output
Note: the second dimension of the array
AB
must be at least
max1,N.
On entry: the
m by
n matrix
A.
The matrix is stored in rows
kl+1 to
2kl+ku+1; the first
kl rows need not be set, more precisely, the element
Aij must be stored in
See
Section 8 in F07BNF (ZGBSV) for further details.
On exit: if
INFO≥0,
AB is overwritten by details of the factorization.
The upper triangular band matrix U, with kl+ku superdiagonals, is stored in rows 1 to kl+ku+1 of the array, and the multipliers used to form the matrix L are stored in rows kl+ku+2 to 2kl+ku+1.
- 6: LDAB – INTEGERInput
On entry: the first dimension of the array
AB as declared in the (sub)program from which F07BRF (ZGBTRF) is called.
Constraint:
LDAB≥2×KL+KU+1.
- 7: IPIV(minM,N) – INTEGER arrayOutput
On exit: the pivot indices that define the permutation matrix. At the
ith step, if IPIVi>i then row i of the matrix A was interchanged with row IPIVi, for i=1,2,…,minm,n. IPIVi≤i indicates that, at the ith step, a row interchange was not required.
- 8: INFO – INTEGEROutput
On exit:
INFO=0 unless the routine detects an error (see
Section 6).
6 Error Indicators and Warnings
Errors or warnings detected by the routine:
- INFO<0
If INFO=-i, the ith parameter had an illegal value. An explanatory message is output, and execution of the program is terminated.
- INFO>0
If INFO=i, Ui,i is exactly zero. The factorization has been completed, but the factor U is exactly singular, and division by zero will occur if it is used to solve a system of equations.
7 Accuracy
The computed factors
L and
U are the exact factors of a perturbed matrix
A+E, where
ck is a modest linear function of
k=kl+ku+1, and
ε is the
machine precision. This assumes
k
≪
minm,n
.
8 Further Comments
The total number of real floating point operations varies between approximately 8nklku+1 and 8nklkl+ku+1, depending on the interchanges, assuming m=n≫kl and n≫ku.
A call to F07BRF (ZGBTRF) may be followed by calls to the routines:
The real analogue of this routine is
F07BDF (DGBTRF).
9 Example
This example computes the
LU factorization of the matrix
A, where
Here
A is treated as a band matrix with one subdiagonal and two superdiagonals.
9.1 Program Text
Program Text (f07brfe.f90)
9.2 Program Data
Program Data (f07brfe.d)
9.3 Program Results
Program Results (f07brfe.r)