?dbtf2
?dbtf2
Computes an LU factorization of a general band matrix with no pivoting (local unblocked algorithm).
Syntax
void
sdbtf2
(
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*kl
,
MKL_INT
*ku
,
float
*ab
,
MKL_INT
*ldab
,
MKL_INT
*info
);
void
ddbtf2
(
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*kl
,
MKL_INT
*ku
,
double
*ab
,
MKL_INT
*ldab
,
MKL_INT
*info
);
void
cdbtf2
(
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*kl
,
MKL_INT
*ku
,
MKL_Complex8
*ab
,
MKL_INT
*ldab
,
MKL_INT
*info
);
void
zdbtf2
(
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*kl
,
MKL_INT
*ku
,
MKL_Complex16
*ab
,
MKL_INT
*ldab
,
MKL_INT
*info
);
Include Files
- mkl_scalapack.h
Description
The
?dbtf2
function
computes an LU
factorization of a general real/complex m
-by-n
band matrix A
without using partial pivoting with row interchanges.This is the unblocked version of the algorithm, calling BLAS Routines and Functions.
Input Parameters
- m
- The number of rows of the matrixA(.m≥0)
- n
- The number of columns inA(.n≥0)
- kl
- The number of sub-diagonals within the band ofA(.kl≥0)
- ku
- The number of super-diagonals within the band ofA(.ku≥0)
- ab
- The matrixArray of size.ldab*nAin band storage, in rowstokl+12; rows 1 tokl+ku+1klof thematrixneed not be set. Thej-th column ofAis stored in the arrayabas follows:ab[kl+ku+i-j+(j-1)*ldab] =A(i,j) formax(1,j-ku) ≤i≤min(m,j+kl).
- ldab
- The leading dimension of the arrayab.(ldab≥2kl+ku+1)
Output Parameters
- ab
- On exit, details of the factorization:Uis stored as an upper triangular band matrix withkl+kusuperdiagonals in rows 1 to, and the multipliers used during the factorization are stored in rowskl+ku+1tokl+ku+22*.kl+ku+1See the.Application Notesbelow for further details
- info
- = 0: successful exit< 0: ifinfo= -i, thei-th argument had an illegal value,>0: ifinfo= +i,the matrix elementU(i,i) is 0. The factorization has been completed, but the factorUis exactly singular. Division by 0 will occur if you use the factorUfor solving a system of linear equations.
Application Notes
The band storage scheme is illustrated by the following example, when , , :
m
= n
= 6kl
= 2ku
= 1
The
function
does not use array elements marked *; elements marked + need not be set on entry, but the function
requires them to store elements of U
, because of fill-in resulting from the row interchanges.