Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 10/31/2024
Public
Document Table of Contents

p?laqr5

Performs a single small-bulge multi-shift QR sweep.

Syntax

call pslaqr5( wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si, h, desch, iloz, ihiz, z, descz, work, lwork, iwork, liwork )

call pdlaqr5( wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si, h, desch, iloz, ihiz, z, descz, work, lwork, iwork, liwork )

Description

This auxiliary subroutine called by p?laqr0 performs a single small-bulge multi-shift QR sweep by chasing separated groups of bulges along the main block diagonal of a Hessenberg matrix H.

Input Parameters

wantt

(global) LOGICAL scalar

wantt= .TRUE. if the quasi-triangular Schur factor is being computed. wantt is set to .FALSE. otherwise.

wantz

(global) LOGICAL scalar

wantz= .TRUE. if the orthogonal Schur factor is being computed. wantz is set to .FALSE. otherwise.

kacc22

(global) INTEGER

Value 0, 1, or 2. Specifies the computation mode of far-from-diagonal orthogonal updates.

= 0: p?laqr5 does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries.

= 1: p?laqr5 accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries.

= 2: p?laqr5 accumulates reflections, uses matrix-matrix multiply to update the far-from-diagonal matrix entries, and takes advantage of 2-by-2 block structure during matrix multiplies.

n

(global) INTEGER scalar

The order of the Hessenberg matrix H and, if wantzis .TRUE., the order of the orthogonal matrix Z.

ktop, kbot

(global) INTEGER scalar

These are the first and last rows and columns of an isolated diagonal block upon which the QR sweep is to be applied. It is assumed without a check that either ktop = 1 or H(ktop,ktop-1) = 0 and either kbot = n or H(kbot+1,kbot) = 0.

nshfts

(global) INTEGER scalar

nshfts gives the number of simultaneous shifts. nshfts must be positive and even.

sr, si

REAL for pslaqr5

DOUBLE PRECISION for pdlaqr5

(global) Array of size nshfts

sr contains the real parts and si contains the imaginary parts of the nshfts shifts of origin that define the multi-shift QR sweep.

h

REAL for pslaqr5

DOUBLE PRECISION for pdlaqr5

(local) Array of size (lld_h,LOCc(n))

On input h contains a Hessenberg matrix H.

desch

(global and local) INTEGER

array of size dlen_.

The array descriptor for the distributed matrix H .

iloz, ihiz

(global) INTEGER

Specify the rows of the matrix Z to which transformations must be applied if wantzis .TRUE.. 1 ilozihizn

z

REAL for pslaqr5

DOUBLE PRECISION for pdlaqr5

(local) array of size (lld_z,LOCc(n))

If wantz= .TRUE., then the QR Sweep orthogonal similarity transformation is accumulated into the matrix Z(iloz:ihiz,kbot:ktop) from the right. If wantz= .FALSE., then z is unreferenced.

descz

(global and local) INTEGER array of size dlen_.

The array descriptor for the distributed matrix Z.

work

REAL for pslaqr5

DOUBLE PRECISION for pdlaqr5

(local workspace) array of size lwork

lwork

(local) INTEGER

The size of the work array (lwork1).

If lwork=-1, then a workspace query is assumed.

iwork

(local workspace) INTEGER array of size liwork

liwork

(local) INTEGER

The size of the iwork array (liwork1).

If liwork=-1, then a workspace query is assumed.

Output Parameters

h

A multi-shift QR sweep with shifts sr(j)+i*si(j) is applied to the isolated diagonal block in rows and columns ktop through kbot of the matrix H.

z

If wantzis .TRUE., z is updated with transformations applied only to the submatrix Z(iloz:ihiz,kbot:ktop).

work(1)

On exit, if info = 0, work(1) returns the optimal lwork.

iwork(1)

On exit, if info = 0, iwork(1) returns the optimal liwork.

See Also