Computes an LU factorization of a general band matrix with no pivoting (local unblocked algorithm).



call sdbtf2(m, n, kl, ku, ab, ldab, info)

call ddbtf2(m, n, kl, ku, ab, ldab, info)

call cdbtf2(m, n, kl, ku, ab, ldab, info)

call zdbtf2(m, n, kl, ku, ab, ldab, info)


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

  • C: mkl_scalapack.h


The ?dbtf2 routine 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


INTEGER. The number of rows of the matrix A(m 0).


INTEGER. The number of columns in A(n 0).


INTEGER. The number of sub-diagonals within the band of A(kl 0).


INTEGER. The number of super-diagonals within the band of A(ku 0).


REAL for sdbtf2


COMPLEX for cdbtf2

COMPLEX*16 for zdbtf2.

Array, size ldab by n.

The matrix A in band storage, in rows kl+1 to 2kl+ku+1; rows 1 to kl of 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).


INTEGER. The leading dimension of the array ab.

(ldab 2kl + ku +1)

Output Parameters


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.



= 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 *; elements marked + need not be set on entry, but the routine requires them to store elements of U, because of fill-in resulting from the row interchanges.

For more complete information about compiler optimizations, see our Optimization Notice.