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



NAME
       DLAMSH  -  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 DLAMSH ( S, LDS, NBULGE, JBLK, H, LDH, N, ULP )

           INTEGER       LDS, NBULGE, JBLK, LDH, N

           DOUBLE        PRECISION ULP

           DOUBLE        PRECISION S(LDS,*), H(LDH,*)

PURPOSE
       DLAMSH 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.  DLAMSH  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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION
               On entry, machine precision Unchanged on exit.

               Implemented by:  G. Henry, May 1, 1997



ScaLAPACK routine               31 October 2017                      DLAMSH(3)