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



NAME
       DLARRF2  - 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 DLARRF2( 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

           DOUBLE          PRECISION CLGAPL, CLGAPR, PIVMIN, SIGMA, SPDIAM

           LOGICAL         TRYMID

           DOUBLE          PRECISION  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  ),  DLARRF2 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 DLARRF 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) DOUBLE PRECISION array, dimension (N)
               The N diagonal elements of the diagonal matrix D.

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

       LD      (input) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION array,  dimension  >=   (CLEND-
       CLSTRT+1)
               The separation from the right neighbor eigenvalue in W.

       WERR    (input) DOUBLE PRECISION 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) DOUBLE PRECISION
               The minimum pivot allowed in the sturm sequence.

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

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

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

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



ScaLAPACK routine               31 October 2017                     DLARRF2(3)