p?laqr4

Computes the eigenvalues of a Hessenberg matrix, and optionally computes the matrices from the Schur decomposition.

Syntax

Fortran:

call pslaqr4 ( wantt , wantz , n , ilo , ihi , a , desca , wr , wi , iloz , ihiz , z , descz , t , ldt , v , ldv , work , lwork , info )

call pdlaqr4 ( wantt , wantz , n , ilo , ihi , a , desca , wr , wi , iloz , ihiz , z , descz , t , ldt , v , ldv , work , lwork , info )

Include Files

  • C: mkl_scalapack.h

Description

p?laqr4 is an auxiliary routine used to find the Schur decomposition and or eigenvalues of a matrix already in Hessenberg form from cols ilo to ihi. This routine requires that the active block is small enough, i.e. ihi-ilo+1 ldt, so that it can be solved by LAPACK. Normally, it is called by p?laqr1. All the inputs are assumed to be valid without checking.

Input Parameters

wantt

(global ) LOGICAL

= .TRUE. : the full Schur form T is required;

= .FALSE.: only eigenvalues are required.

wantz

(global ) LOGICAL

= .TRUE. : the matrix of Schur vectors Z is required;

= .FALSE.: Schur vectors are not required.

n

(global ) INTEGER

The order of the Hessenberg matrix A (and Z if wantz). n 0.

ilo, ihi

(global ) INTEGER

It is assumed that a is already upper quasi-triangular in rows and columns ihi+1:n, and that a(ilo,ilo-1) = 0 (unless ilo = 1). p?laqr4 works primarily with the Hessenberg submatrix in rows and columns ilo to ihi, but applies transformations to all of A if wantt is .TRUE.. 1 ilo max(1,ihi); ihi n.

a

REAL for pslaqr4

DOUBLE PRECISION for pdlaqr4

(global ) array, dimension (desca(lld_),LOCc(n))

The upper Hessenberg matrix A.

desca

(global and local) INTEGER array of dimension dlen_.

The array descriptor for the distributed matrix a.

iloz, ihiz

(global ) INTEGER

Specify the rows of z to which transformations must be applied if wantz is .TRUE.. 1 iloz ilo; ihi ihiz n.

z

REAL for pslaqr4

DOUBLE PRECISION for pdlaqr4

(global ) array.

If wantz is .TRUE., on entry z must contain the current matrix Z of transformations accumulated by p?hseqr.

If wantz is .FALSE., z is not referenced.

descz

(global and local) INTEGER array of dimension dlen_.

The array descriptor for the distributed matrix z.

t

REAL for pslaqr4

DOUBLE PRECISION for pdlaqr4

(local workspace) array, dimension ldt*(ihi-ilo+1).

ldt

(local ) INTEGER

The leading dimension of the array t. ldt ihi-ilo+1.

v

REAL for pslaqr4

DOUBLE PRECISION for pdlaqr4

(local workspace) array, dimension ldv*(ihi-ilo+1).

ldv

(local ) INTEGER

The leading dimension of the array v. ldv ihi-ilo+1.

work

REAL for pslaqr4

DOUBLE PRECISION for pdlaqr4

(local workspace) array, dimension lwork.

lwork

(local ) INTEGER

The dimension of the work array work.

lwork ihi-ilo+1.

OUTPUT Parameters

a

On exit, if wantt is .TRUE., a is upper quasi-triangular in rows and columns ilo:ihi, with any 2-by-2 or larger diagonal blocks not yet in standard form. If wantt is .FALSE., the contents of a are unspecified on exit.

wr, wi

REAL for pslaqr4

DOUBLE PRECISION for pdlaqr4

(global replicated ) array, dimension (n)

The real and imaginary parts, respectively, of the computed eigenvalues ilo to ihi are stored in the corresponding elements of wr and wi. If two eigenvalues are computed as a complex conjugate pair, they are stored in consecutive elements of wr and wi, say the i-th and (i+1)th, with wi(i) > 0 and wi(i+1) < 0. If wantt is .TRUE., the eigenvalues are stored in the same order as on the diagonal of the Schur form returned in a. a may be returned with larger diagonal blocks until the next release.

z

If wantz is .TRUE., z is updated with transformations applied only to the submatrix z(iloz:ihiz,ilo:ihi).

info

(global ) INTEGER

< 0: parameter number -info incorrect or inconsistent;

= 0: successful exit;

> 0: p?laqr4 failed to compute all the eigenvalues ilo to ihi in a total of 30*(ihi-ilo+1) iterations; if info = i, elements i+1:ihi of wr and wi contain those eigenvalues which have been successfully computed.

Pour de plus amples informations sur les optimisations de compilation, consultez notre Avertissement concernant les optimisations.