SLAMSH(3)     ScaLAPACK routine of NEC Numeric Library Collection    SLAMSH(3)



NAME
       SLAMSH  -  send multiple shifts through a small (single node) matrix to
       see how consecutive small subdiagonal elements are modified  by  subse-
       quent  shifts in an effort to maximize the number of bulges that can be
       sent through

SYNOPSIS
       SUBROUTINE SLAMSH ( S, LDS, NBULGE, JBLK, H, LDH, N, ULP )

           INTEGER       LDS, NBULGE, JBLK, LDH, N

           REAL          ULP

           REAL          S(LDS,*), H(LDH,*)

PURPOSE
       SLAMSH sends multiple shifts through a small (single  node)  matrix  to
       see  how  consecutive small subdiagonal elements are modified by subse-
       quent shifts in an effort to maximize the number of bulges that can  be
       sent  through.  SLAMSH  should  only  be called when there are multiple
       shifts/bulges
          (NBULGE > 1) and the first shift is starting in the middle of an
          unreduced Hessenberg matrix because of two or more consecutive small
          subdiagonal elements.


ARGUMENTS
       S       (local input/output) REAL array, (LDS,*)
               On  entry, the matrix of shifts.  Only the 2x2 diagonal of S is
               referenced.  It is assumed that S has JBLK double shifts  (size
               2).   On  exit,  the  data  is rearranged in the best order for
               applying.

       LDS     (local input) INTEGER
               On entry, the leading dimension of S.  Unchanged on exit.  1  <
               NBULGE <= JBLK <= LDS/2

       NBULGE  (local input/output) INTEGER
               On  entry,  the  number  of  bulges  to  send through H ( >1 ).
               NBULGE should be less than the maximum determined (JBLK).  1  <
               NBULGE  <=  JBLK <= LDS/2 On exit, the maximum number of bulges
               that can be sent through.

       JBLK    (local input) INTEGER
               On entry, the number of shifts determined for S.  Unchanged  on
               exit.

       H       (local input/output) REAL array (LDH,N)
               On entry, the local matrix to apply the shifts on.  H should be
               aligned so that the starting row is 2.  On exit,  the  data  is
               destroyed.

       LDS     (local input) INTEGER
               On entry, the leading dimension of S.  Unchanged on exit.

       N       (local input) INTEGER
               On  entry, the size of H.  If all the bulges are expected to go
               through, N should be at least  4*NBULGE+2.   Otherwise,  NBULGE
               may be reduced by this routine.

       ULP     (local input) REAL
               On entry, machine precision Unchanged on exit.

               Implemented by:  G. Henry, May 1, 1997



ScaLAPACK routine               31 October 2017                      SLAMSH(3)