Developer Reference for Intel® oneAPI Math Kernel Library for C
?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
sdbtf2 ddbtf2 cdbtf2 zdbtf2 The ?dbtf2 routine 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 matrix A(m ≥ 0) .
n
The number of columns in 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) .
- ab
-
REAL for sdbtf2 DOUBLE PRECISION for ddbtf2 COMPLEX for cdbtf2 COMPLEX*16 for zdbtf2 .
Array of size ldab * n .
ldab
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
= 0 : successful exit < 0 : if info = - i , the i -th argument had an illegal value,
> 0: if info = + i , the matrix element 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 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.