Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?laqr5

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

Syntax

call slaqr5( wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si, h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh )

call dlaqr5( wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si, h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh )

call claqr5( wantt, wantz, kacc22, n, ktop, kbot, nshfts, s, h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh )

call zlaqr5( wantt, wantz, kacc22, n, ktop, kbot, nshfts, s, h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh )

Include Files

  • mkl.fi

Description

This auxiliary routine called by ?laqr0 performs a single small-bulge multi-shift QR sweep.

Input Parameters

wantt

LOGICAL.

wantt = .TRUE. if the quasi-triangular/triangular Schur factor is computed.

wantt is set to .FALSE. otherwise.

wantz

LOGICAL.

wantz = .TRUE. if the orthogonal/unitary Schur factor is computed.

wantz is set to .FALSE. otherwise.

kacc22

INTEGER. Possible values are 0, 1, or 2.

Specifies the computation mode of far-from-diagonal orthogonal updates.

= 0: the routine does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries.

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

= 2: the routine 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

INTEGER. The order of the Hessenberg matrix H upon which the routine operates.

ktop, kbot

INTEGER.

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

INTEGER.

Number of simultaneous shifts, must be positive and even.

sr, si

REAL for slaqr5

DOUBLE PRECISION for dlaqr5

Arrays, DIMENSION (nshfts) each.

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

s

COMPLEX for claqr5

DOUBLE COMPLEX for zlaqr5.

Arrays, DIMENSION (nshfts).

s contains the shifts of origin that define the multi-shift QR sweep.

h

REAL for slaqr5

DOUBLE PRECISION for dlaqr5

COMPLEX for claqr5

DOUBLE COMPLEX for zlaqr5.

Array, DIMENSION (ldh, n), on input contains the Hessenberg matrix.

ldh

INTEGER. The leading dimension of the array h just as declared in the calling routine. ldh ≥ max(1, n).

iloz, ihiz

INTEGER. Specify the rows of Z to which transformations must be applied if wantz is .TRUE.. 1 ≤ ilozihizn.

z

REAL for slaqr5

DOUBLE PRECISION for dlaqr5

COMPLEX for claqr5

DOUBLE COMPLEX for zlaqr5.

Array, DIMENSION (ldz, ihi), contains the matrix Z if wantz is .TRUE.. If wantz is .FALSE., then z is not referenced.

ldz

INTEGER. The leading dimension of the array z just as declared in the calling routine. ldzn.

v

REAL for slaqr5

DOUBLE PRECISION for dlaqr5

COMPLEX for claqr5

DOUBLE COMPLEX for zlaqr5.

Workspace array with dimension (ldv, nshfts/2).

ldv

INTEGER. The leading dimension of the array v just as declared in the calling routine. ldv ≥ 3.

u

REAL for slaqr5

DOUBLE PRECISION for dlaqr5

COMPLEX for claqr5

DOUBLE COMPLEX for zlaqr5.

Workspace array with dimension (ldu, 3*nshfts-3).

ldu

INTEGER. The leading dimension of the array u just as declared in the calling routine. ldu ≥ 3*nshfts-3.

nh

INTEGER. The number of column in the array wh available for workspace. nh ≥ 1.

wh

REAL for slaqr5

DOUBLE PRECISION for dlaqr5

COMPLEX for claqr5

DOUBLE COMPLEX for zlaqr5.

Workspace array with dimension (ldwh, nh)

ldwh

INTEGER. The leading dimension of the array wh just as declared in the calling routine. ldwh ≥ 3*nshfts-3

nv

INTEGER. The number of rows of the array wv available for workspace. nv ≥ 1.

wv

REAL for slaqr5

DOUBLE PRECISION for dlaqr5

COMPLEX for claqr5

DOUBLE COMPLEX for zlaqr5.

Workspace array with dimension (ldwv, 3*nshfts-3).

ldwv

INTEGER. The leading dimension of the array wv just as declared in the calling routine. ldwvnv.

Output Parameters

sr, si

On output, may be reordered.

h

On output a multi-shift QR Sweep with shifts sr(j)+i*si(j) or s(j) is applied to the isolated diagonal block in rows and columns ktop through kbot .

z

If wantz is .TRUE., then the QR Sweep orthogonal/unitary similarity transformation is accumulated into z(iloz:ihiz, ilo:ihi) from the right.

If wantz is .FALSE., then z is unreferenced.