Computes the Cholesky factorization of a symmetric (Hermitian) positive-definite tridiagonal distributed matrix.

## Syntax

void pspttrf (MKL_INT *n , float *d , float *e , MKL_INT *ja , MKL_INT *desca , float *af , MKL_INT *laf , float *work , MKL_INT *lwork , MKL_INT *info );

void pdpttrf (MKL_INT *n , double *d , double *e , MKL_INT *ja , MKL_INT *desca , double *af , MKL_INT *laf , double *work , MKL_INT *lwork , MKL_INT *info );

void pcpttrf (MKL_INT *n , float *d , MKL_Complex8 *e , MKL_INT *ja , MKL_INT *desca , MKL_Complex8 *af , MKL_INT *laf , MKL_Complex8 *work , MKL_INT *lwork , MKL_INT *info );

void pzpttrf (MKL_INT *n , double *d , MKL_Complex16 *e , MKL_INT *ja , MKL_INT *desca , MKL_Complex16 *af , MKL_INT *laf , MKL_Complex16 *work , MKL_INT *lwork , MKL_INT *info );

## Include Files

• mkl_scalapack.h

## Description

The p?pttrffunction computes the Cholesky factorization of an n-by-n real symmetric or complex hermitian positive-definite tridiagonal distributed matrix A(1:n, ja:ja+n-1).

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*D*LH*PT, or

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

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

Optimization Notice

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804

## Input Parameters

n

(global) The order of the distributed submatrix A(1:n, ja:ja+n-1)

(n 0).

d, e

(local)

Pointers into the local memory to arrays of size nb_a each.

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

On entry, the array e contains the local part of the global vector storing the upper diagonal of the distributed matrix A.

ja

(global) The index in the global matrix A indicating 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 ) array of size dlen_. The array descriptor for the distributed matrix A.

If dtype_a = 501, then dlen_ 7;

else if dtype_a = 1, then dlen_ 9.

laf

(local) The size of the array af.

Must be lafnb_a+2.

If laf is not large enough, an error code will be returned and the minimum acceptable size will be returned in af[0].

work

(local) Workspace array of size lwork .

lwork

(local or global) The size of the work array, must be at least

lwork 8*NPCOL.

## Output Parameters

d, e

On exit, overwritten by the details of the factorization.

af

(local)

Array of size laf.

Auxiliary fill-in space. The fill-in space is created in a call to the factorization function p?pttrf and stored in af.

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

work[0]

On exit, work[0] contains the minimum value of lwork required for optimum performance.

info

(global)

If info=0, the execution is successful.

info < 0:

If the i-th argument is an array and the j-th entry, indexed j - 1, 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 positive definite, 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.