Visible to Intel only — GUID: GUID-9FF79E0A-F1BC-4650-B5DA-B6D9DF7F7E8B
Visible to Intel only — GUID: GUID-9FF79E0A-F1BC-4650-B5DA-B6D9DF7F7E8B
?dbtrf
Computes an LU factorization of a general band matrix with no pivoting (local blocked algorithm).
Syntax
call sdbtrf(m, n, kl, ku, ab, ldab, info)
call ddbtrf(m, n, kl, ku, ab, ldab, info)
call cdbtrf(m, n, kl, ku, ab, ldab, info)
call zdbtrf(m, n, kl, ku, ab, ldab, info)
Description
This routine computes an LU factorization of a real m-by-n band matrix A without using partial pivoting or row interchanges.
This is the blocked version of the algorithm, calling BLAS Routines and Functions.
Input Parameters
- m
-
INTEGER. The number of rows of the matrix A (m ≥ 0).
- n
-
INTEGER. The number of columns in A(n ≥ 0).
- kl
-
INTEGER. The number of sub-diagonals within the band of A(kl ≥ 0).
- ku
-
INTEGER. The number of super-diagonals within the band of A(ku ≥ 0).
- ab
-
REAL for sdbtrf
DOUBLE PRECISION for ddbtrf
COMPLEX for cdbtrf
COMPLEX*16 for zdbtrf.
Array of size ldab by n.
The matrix A in band storage, in rows kl+1 to 2kl+ku+1; rows 1 to klof the array need not be set. The j-th column of A is stored in the j-th column of the array ab as follows: ab(kl+ku+1+i-j,j) = A(i,j) for max(1,j-ku) ≤ i ≤ min(m,j+kl).
- ldab
-
INTEGER. The leading dimension of the array ab.
(ldab ≥ 2kl + ku +1)
Output Parameters
- ab
-
On exit, details of the factorization: U is stored as an upper triangular band matrix with kl+ku superdiagonals in rows 1 to kl+ku+1, and the multipliers used during the factorization are stored in rows kl+ku+2 to 2*kl+ku+1. See the Application Notes below for further details.
- info
-
INTEGER.
= 0: successful exit
< 0: if info = - i, the i-th argument had an illegal value,
> 0: if info = + i, U(i,i) is 0. The factorization has been completed, but the factor U is exactly singular. Division by 0 will occur if you use the factor U for solving a system of linear equations.
Application Notes
The band storage scheme is illustrated by the following example, when m = n = 6, kl = 2, ku = 1:
The routine does not use array elements marked *.