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



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

           INTEGER        JBLK, LDH, LDS, N, NBULGE

           REAL           ULP

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

PURPOSE
       CLAMSH 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.  CLAMSH  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) COMPLEX 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) COMPLEX 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.

       LDH     (local input) INTEGER
               On entry, the leading dimension of H.  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.

FURTHER DETAILS
       Implemented by:  M. Fahey, May 28, 1999




ScaLAPACK routine               31 October 2017                      CLAMSH(3)