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)