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



NAME
       SLARRF2  - finds a new relatively robust representation L D L^T - SIGMA
       I = L(+) D(+) L(+)^T such that at least one of the eigenvalues of  L(+)
       D(+) L(+)^T is relatively isolated

SYNOPSIS
       SUBROUTINE SLARRF2( N,  D,  L,  LD,  CLSTRT,  CLEND, CLMID1, CLMID2, W,
                           WGAP, WERR, TRYMID, SPDIAM, CLGAPL, CLGAPR, PIVMIN,
                           SIGMA, DPLUS, LPLUS, WORK, INFO )

           INTEGER         CLSTRT, CLEND, CLMID1, CLMID2, INFO, N

           REAL            CLGAPL, CLGAPR, PIVMIN, SIGMA, SPDIAM

           LOGICAL         TRYMID

           REAL            D( * ), DPLUS( * ), L( * ), LD( * ), LPLUS( * ), W(
                           * ), WGAP( * ), WERR( * ), WORK( * )

PURPOSE
       Given the initial representation L D  L^T  and  its  cluster  of  close
       eigenvalues  (in  a  relative measure), W( CLSTRT ), W( CLSTRT+1 ), ...
       W( CLEND ), SLARRF2 finds a new relatively robust  representation  L  D
       L^T  -  SIGMA I = L(+) D(+) L(+)^T such that at least one of the eigen-
       values of L(+) D(+) L(+)^T is relatively isolated.

       This is an enhanced version of SLARRF that also  tries  shifts  in  the
       middle  of  the cluster, should there be a large gap, in order to break
       large clusters into at least two pieces.


ARGUMENTS
       N       (input) INTEGER
               The order of the matrix (subblock, if the matrix splitted).

       D       (input) REAL array, dimension (N)
               The N diagonal elements of the diagonal matrix D.

       L       (input) REAL array, dimension (N-1)
               The (N-1) subdiagonal elements of the unit bidiagonal matrix L.

       LD      (input) REAL array, dimension (N-1)
               The (N-1) elements L(i)*D(i).

       CLSTRT  (input) INTEGER
               The index of the first eigenvalue in the cluster.

       CLEND   (input) INTEGER
               The index of the last eigenvalue in the cluster.

       CLMID1,2(input) INTEGER
               The index of a middle eigenvalue pair with large gap

       W       (input) REAL array, dimension >=  (CLEND-CLSTRT+1)
               The  eigenvalue  APPROXIMATIONS  of L D L^T in ascending order.
               W( CLSTRT ) through W( CLEND ) form the cluster  of  relatively
               close eigenalues.

       WGAP    (input/output) REAL array, dimension >=  (CLEND-CLSTRT+1)
               The separation from the right neighbor eigenvalue in W.

       WERR    (input) REAL array, dimension >=  (CLEND-CLSTRT+1)
               WERR  contain  the semiwidth of the uncertainty interval of the
               corresponding eigenvalue APPROXIMATION in W

       SPDIAM (input) estimate of the spectral diameter obtained from the
               Gerschgorin intervals

       CLGAPL, CLGAPR (input) absolute gap on each end of the cluster.
               Set by the calling routine to protect against shifts too  close
               to eigenvalues outside the cluster.

       PIVMIN  (input) REAL
               The minimum pivot allowed in the sturm sequence.

       SIGMA   (output) REAL
               The shift used to form L(+) D(+) L(+)^T.

       DPLUS   (output) REAL array, dimension (N)
               The N diagonal elements of the diagonal matrix D(+).

       LPLUS   (output) REAL array, dimension (N-1)
               The  first (N-1) elements of LPLUS contain the subdiagonal ele-
               ments of the unit bidiagonal matrix L(+).

       WORK    (workspace) REAL array, dimension (2*N)
               Workspace.



ScaLAPACK routine               31 October 2017                     SLARRF2(3)