EVLCH

Computes all of the eigenvalues of a complex upper Hessenberg matrix.

Required Arguments

A — Complex upper Hessenberg matrix of order N. (Input)

EVAL — Complex vector of length N containing the eigenvalues of A in decreasing order of magnitude. (Output)

Required Arguments

N — Order of the matrix A. (Input)
Default: N = SIZE (A,2).

LDA — Leading dimension of A exactly as specified in the dimension statement in the calling program. (Input)
Default: LDA = SIZE (A,1).

FORTRAN 90 Interface

Generic: CALL EVLCH (A, EVAL [,])

Specific: The specific interface names are S_EVLCH and D_EVLCH.

FORTRAN 77 Interface

Single: CALL EVLCH (N, A, LDA, EVAL)

Double: The double precision name is DEVLCH.

Description

Routine EVLCH computes the eigenvalues of a complex upper Hessenberg matrix using the QR algorithm. This routine is based on the EISPACK routine COMQR2; see Smith et al. (1976).

Comments

1. Workspace may be explicitly provided, if desired, by use of E3LCH/DE3LCH. The reference is:

CALL E3LCH (N, A, LDA, EVAL, ACOPY, RWK, IWK)

The additional arguments are as follows:

ACOPY — Complex N by N work array. A and ACOPY may be the same, in which case A is destroyed.

RWK — Real work array of length N.

IWK — Integer work array of length N.

2. Informational error

 

Type

Code

Description

4

1

The iteration for the eigenvalues failed to converge.

Example

In this example, a DATA statement is used to set the matrix A. The program computes and prints the eigenvalues of this matrix.

 

USE EVLCH_INT

USE WRCRN_INT

 

IMPLICIT NONE

! Declare variables

INTEGER LDA, N

PARAMETER (N=4, LDA=N)

COMPLEX A(LDA,N), EVAL(N)

! Set values of A

!

! A = (5+9i 5+5i -6-6i -7-7i)

! (3+3i 6+10i -5-5i -6-6i)

! ( 0 3+3i -1+3i -5-5i)

! ( 0 0 -3-3i 4i)

!

DATA A /(5.0,9.0), (3.0,3.0), (0.0,0.0), (0.0,0.0), &

(5.0,5.0), (6.0,10.0), (3.0,3.0), (0.0,0.0), &

(-6.0,-6.0), (-5.0,-5.0), (-1.0,3.0), (-3.0,-3.0), &

(-7.0,-7.0), (-6.0,-6.0), (-5.0,-5.0), (0.0,4.0)/

!

! Find the eigenvalues of A

CALL EVLCH (A, EVAL)

! Print results

CALL WRCRN ('EVAL', EVAL, 1, N, 1)

END

Output

 

EVAL

1 2 3 4

( 8.22, 12.22) ( 3.40, 7.40) ( 1.60, 5.60) ( -3.22, 0.78)