PSLAQR5(3) ScaLAPACK routine of NEC Numeric Library Collection PSLAQR5(3)
NAME
PSLAQR5 - performs a single small-bulge multi-shift QR sweep by chasing
separated groups of bulges along the main block diagonal of H
SYNOPSIS
SUBROUTINE PSLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, SR,
SI, H, DESCH, ILOZ, IHIZ, Z, DESCZ, WORK, LWORK,
IWORK, LIWORK )
INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, N, NSHFTS, LWORK,
LIWORK
LOGICAL WANTT, WANTZ
INTEGER DESCH( * ), DESCZ( * ), IWORK( * )
REAL H( * ), SI( * ), SR( * ), Z( * ), WORK( * )
PURPOSE
This auxiliary subroutine called by PSLAQR0 performs a single small-
bulge multi-shift QR sweep by chasing separated groups of bulges along
the main block diagonal of H.
ARGUMENTS
WANTT (global input) logical scalar
WANTT = .TRUE. if the quasi-triangular Schur factor is being
computed. WANTT is set to .FALSE. otherwise.
WANTZ (global input) logical scalar
WANTZ = .TRUE. if the orthogonal Schur factor is being com-
puted. WANTZ is set to .FALSE. otherwise.
KACC22 (global input) integer with value 0, 1, or 2.
Specifies the computation mode of far-from-diagonal orthogonal
updates.
= 1: PSLAQR5 accumulates reflections and uses matrix-matrix
multiply to update the far-from-diagonal matrix entries.
= 2: PSLAQR5 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 input) integer scalar
N is the order of the Hessenberg matrix H upon which this sub-
routine operates.
KTOP (global input) integer scalar
KBOT (global input) 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 input) integer scalar
NSHFTS gives the number of simultaneous shifts. NSHFTS must be
positive and even.
SR (global input) REAL array of size (NSHFTS)
SI (global input) REAL 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 (local input/output) REAL array of size
(DESCH(LLD_),*) On input H contains a Hessenberg matrix. On
output 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.
DESCH (global and local input) INTEGER array of dimension DLEN_.
The array descriptor for the distributed matrix H.
ILOZ (global input) INTEGER
IHIZ (global input) INTEGER
Specify the rows of Z to which transformations must be applied
if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N
Z (local input/output) REAL array of size (DESCZ(LLD_),*)
If WANTZ = .TRUE., then the QR Sweep orthogonal similarity
transformation is accumulated into Z(ILOZ:IHIZ,ILO:IHI) from
the right.
If WANTZ = .FALSE., then Z is unreferenced.
DESCZ (global and local input) INTEGER array of dimension DLEN_.
The array descriptor for the distributed matrix Z.
WORK (local workspace) REAL array, dimension(DWORK)
LWORK (local input) INTEGER
The length of the workspace array WORK.
IWORK (local workspace) INTEGER array, dimension (LIWORK)
LIWORK (local input) INTEGER
The length of the workspace array IWORK.
ScaLAPACK routine 31 October 2017 PSLAQR5(3)