p?dttrf

Computes the LU factorization of a diagonally dominant-like tridiagonal distributed matrix.

Syntax

Fortran:

call psdttrf(n, dl, d, du, ja, desca, af, laf, work, lwork, info)

call pddttrf(n, dl, d, du, ja, desca, af, laf, work, lwork, info)

call pcdttrf(n, dl, d, du, ja, desca, af, laf, work, lwork, info)

call pzdttrf(n, dl, d, du, ja, desca, af, laf, work, lwork, info)

C:

void psdttrf (MKL_INT *n , float *dl , float *d , float *du , MKL_INT *ja , MKL_INT *desca , float *af , MKL_INT *laf , float *work , MKL_INT *lwork , MKL_INT *info );

void pddttrf (MKL_INT *n , double *dl , double *d , double *du , MKL_INT *ja , MKL_INT *desca , double *af , MKL_INT *laf , double *work , MKL_INT *lwork , MKL_INT *info );

void pcdttrf (MKL_INT *n , MKL_Complex8 *dl , MKL_Complex8 *d , MKL_Complex8 *du , MKL_INT *ja , MKL_INT *desca , MKL_Complex8 *af , MKL_INT *laf , MKL_Complex8 *work , MKL_INT *lwork , MKL_INT *info );

void pzdttrf (MKL_INT *n , MKL_Complex16 *dl , MKL_Complex16 *d , MKL_Complex16 *du , MKL_INT *ja , MKL_INT *desca , MKL_Complex16 *af , MKL_INT *laf , MKL_Complex16 *work , MKL_INT *lwork , MKL_INT *info );

Include Files

  • C: mkl_scalapack.h

Description

The p?dttrf routine computes the LU factorization of an n-by-n real/complex diagonally dominant-like tridiagonal distributed matrix A(1:n, ja:ja+n-1) without pivoting for stability.

The resulting factorization is not the same factorization as returned from LAPACK. Additional permutations are performed on the matrix for the sake of parallelism.

The factorization has the form:

A(1:n, ja:ja+n-1) = P*L*U*PT,

where P is a permutation matrix, and L and U are banded lower and upper triangular matrices, respectively.

Input Parameters

n

(global) INTEGER. The number of rows and columns to be operated on, that is, the order of the distributed submatrix A(1:n, ja:ja+n-1) (n 0).

dl, d, du

(local)

REAL for pspttrf

DOUBLE PRECISON for pdpttrf

COMPLEX for pcpttrf

DOUBLE COMPLEX for pzpttrf.

Pointers to the local arrays of dimension (desca(nb_)) each.

On entry, the array dl contains the local part of the global vector storing the subdiagonal elements of the matrix. Globally, dl(1) is not referenced, and dl must be aligned with d.

On entry, the array d contains the local part of the global vector storing the diagonal elements of the matrix.

On entry, the array du contains the local part of the global vector storing the super-diagonal elements of the matrix. du(n) is not referenced, and du must be aligned with d.

ja

(global) INTEGER. The index in the global array A that points to the start of the matrix to be operated on ( which may be either all of A or a submatrix of A).

desca

(global and local) INTEGER array, dimension (dlen_). The array descriptor for the distributed matrix A. If desca(dtype_) = 501, then dlen_ 7;

else if desca(dtype_) = 1, then dlen_ 9.

laf

(local) INTEGER. The dimension of the array af.

Must be laf 2*(NB+2) .

If laf is not large enough, an error code will be returned and the minimum acceptable size will be returned in af(1).

work

(local) Same type as d. Workspace array of dimension lwork.

lwork

(local or global) INTEGER. The size of the work array, must be at least lwork 8*NPCOL.

Output Parameters

dl, d, du

On exit, overwritten by the information containing the factors of the matrix.

af

(local)

REAL for psdttrf

DOUBLE PRECISION for pddttrf

COMPLEX for pcdttrf

DOUBLE COMPLEX for pzdttrf.

Array, dimension (laf).

Auxiliary Fillin space. Fillin is created during the factorization routine p?dttrf and this is stored in af.

Note that if a linear system is to be solved using p?dttrs after the factorization routine, af must not be altered.

work(1)

On exit, work(1) contains the minimum value of lwork required for optimum performance.

info

(global) INTEGER.

If info=0, the execution is successful.

info < 0:

If the i-th argument is an array and the j-th entry had an illegal value, then info = -(i*100+j); if the i-th argument is a scalar and had an illegal value, then info = -i.

info > 0:

If info = kNPROCS, the submatrix stored on processor info and factored locally was not diagonally dominant-like, and the factorization was not completed. If info = k > NPROCS, the submatrix stored on processor info-NPROCS representing interactions with other processors was not nonsingular, and the factorization was not completed.

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