Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 3/22/2024
Public
Document Table of Contents

p?laqr4

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

Syntax

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 )

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); ihin.

a

REAL for pslaqr4

DOUBLE PRECISION for pdlaqr4

(global ) array of size (lld_a,LOCc(n))

The upper Hessenberg matrix A.

desca

(global and local) INTEGER array of size dlen_.

The array descriptor for the distributed matrix a.

iloz, ihiz

(global ) INTEGER

Specify the rows of the matrix Z to which transformations must be applied if wantz is .TRUE.. 1 ilozilo; ihiihizn.

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 size dlen_.

The array descriptor for the distributed matrix Z.

t

REAL for pslaqr4

DOUBLE PRECISION for pdlaqr4

(local workspace) array of size ldt*(ihi-ilo+1).

ldt

(local ) INTEGER

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

v

REAL for pslaqr4

DOUBLE PRECISION for pdlaqr4

(local workspace) array of size ldv*(ihi-ilo+1).

ldv

(local ) INTEGER

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

work

REAL for pslaqr4

DOUBLE PRECISION for pdlaqr4

(local workspace) array of size lwork.

lwork

(local ) INTEGER

The size of the work array work.

lworkihi-ilo+1.

OUTPUT Parameters

a

On exit, if wantt is .TRUE., the matrix 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 wanttis .FALSE., the contents of a are unspecified on exit.

wr, wi

REAL for pslaqr4

DOUBLE PRECISION for pdlaqr4

(global replicated ) array of size 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. The matrix 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.

See Also