DLASD7  -  merge  the two sets of singular values together
       into a single sorted set


SYNOPSIS

       SUBROUTINE DLASD7( ICOMPQ, NL, NR, SQRE, K, D, Z, ZW,  VF,
                          VFW, VL, VLW, ALPHA, BETA, DSIGMA, IDX,
                          IDXP, IDXQ, PERM, GIVPTR, GIVCOL,  LDG­
                          COL, GIVNUM, LDGNUM, C, S, INFO )

           INTEGER        GIVPTR,   ICOMPQ,   INFO,   K,  LDGCOL,
                          LDGNUM, NL, NR, SQRE

           DOUBLE         PRECISION ALPHA, BETA, C, S

           INTEGER        GIVCOL( LDGCOL, * ), IDX( * ), IDXP(  *
                          ), IDXQ( * ), PERM( * )

           DOUBLE         PRECISION  D( * ), DSIGMA( * ), GIVNUM(
                          LDGNUM, * ), VF( * ), VFW( * ),  VL(  *
                          ), VLW( * ), Z( * ), ZW( * )


PURPOSE

       DLASD7  merges  the  two  sets of singular values together
       into a single sorted set. Then it  tries  to  deflate  the
       size of the problem. There are two ways in which deflation
       can occur:  when two or more  singular  values  are  close
       together  or if there is a tiny entry in the Z vector. For
       each such occurrence the  order  of  the  related  secular
       equation problem is reduced by one.

       DLASD7 is called from DLASD6.


ARGUMENTS

       ICOMPQ  (input) INTEGER
               Specifies  whether singular vectors are to be com­
               puted in compact form, as follows:
               = 0: Compute singular values only.
               = 1: Compute singular vectors of upper  bidiagonal
               matrix in compact form.

       NL     (input) INTEGER
              The row dimension of the upper block. NL >= 1.

       NR     (input) INTEGER
              The row dimension of the lower block. NR >= 1.

       SQRE   (input) INTEGER
              =  0: the lower block is an NR-by-NR square matrix.
              = 1: the lower block is an NR-by-(NR+1) rectangular
              matrix.

              The  bidiagonal matrix has N = NL + NR + 1 rows and


       K      (output) INTEGER
              Contains the dimension of the non-deflated  matrix,
              this  is the order of the related secular equation.
              1 <= K <=N.

       D      (input/output) DOUBLE PRECISION array, dimension (
              N )
              On  entry D contains the singular values of the two
              submatrices to be combined. On exit D contains  the
              trailing (N-K) updated singular values (those which
              were deflated) sorted into increasing order.

       Z      (output) DOUBLE PRECISION array, dimension ( M )
              On exit Z contains the updating row vector  in  the
              secular equation.

       ZW     (workspace) DOUBLE PRECISION array, dimension ( M )
              Workspace for Z.

       VF     (input/output) DOUBLE PRECISION array, dimension (
              M )
              On  entry, VF(1:NL+1) contains the first components
              of all
              right singular vectors  of  the  upper  block;  and
              VF(NL+2:M)  contains  the  first  components of all
              right singular vectors of the lower block. On exit,
              VF  contains the first components of all right sin­
              gular vectors of the bidiagonal matrix.

       VFW    (workspace) DOUBLE PRECISION array, dimension ( M )
              Workspace for VF.

       VL     (input/output) DOUBLE PRECISION array, dimension (
              M )
              On entry, VL(1:NL+1) contains the  last  components
              of all
              right  singular  vectors  of  the  upper block; and
              VL(NL+2:M) contains  the  last  components  of  all
              right singular vectors of the lower block. On exit,
              VL contains the last components of all right singu­
              lar vectors of the bidiagonal matrix.

       VLW    (workspace) DOUBLE PRECISION array, dimension ( M )
              Workspace for VL.

       ALPHA  (input) DOUBLE PRECISION
              Contains the diagonal element associated  with  the
              added row.

       BETA   (input) DOUBLE PRECISION
              Contains  the  off-diagonal element associated with
              the added row.

              N  )  Contains a copy of the diagonal elements (K-1
              singular values and one zero) in the secular  equa­
              tion.

       IDX    (workspace) INTEGER array, dimension ( N )
              This  will contain the permutation used to sort the
              contents of D into ascending order.

       IDXP   (workspace) INTEGER array, dimension ( N )
              This will contain the  permutation  used  to  place
              deflated  values  of  D at the end of the array. On
              output IDXP(2:K)
              points to the nondeflated D-values and  IDXP(K+1:N)
              points to the deflated singular values.

       IDXQ   (input) INTEGER array, dimension ( N )
              This  contains  the  permutation  which  separately
              sorts the two  sub-problems  in  D  into  ascending
              order.  Note that entries in the first half of this
              permutation must first be moved one position  back­
              ward;  and  entries  in  the second half must first
              have NL+1 added to their values.

       PERM   (output) INTEGER array, dimension ( N )
              The permutations (from deflation and sorting) to be
              applied  to  each singular block. Not referenced if
              ICOMPQ = 0.

              GIVPTR (output) INTEGER The number of Givens  rota­
              tions which took place in this subproblem. Not ref­
              erenced if ICOMPQ = 0.

              GIVCOL (output) INTEGER array, dimension (  LDGCOL,
              2  )  Each  pair  of  numbers  indicates  a pair of
              columns to take place in  a  Givens  rotation.  Not
              referenced if ICOMPQ = 0.

              LDGCOL  (input)  INTEGER  The  leading dimension of
              GIVCOL, must be at least N.

              GIVNUM (output) DOUBLE PRECISION array, dimension (
              LDGNUM,  2 ) Each number indicates the C or S value
              to be used in the  corresponding  Givens  rotation.
              Not referenced if ICOMPQ = 0.

              LDGNUM  (input)  INTEGER  The  leading dimension of
              GIVNUM, must be at least N.

       C      (output) DOUBLE PRECISION
              C contains garbage if SQRE =0 and the C-value of  a
              Givens  rotation related to the right null space if
              SQRE = 1.

              S contains garbage if SQRE =0 and the S-value of  a
              Givens  rotation related to the right null space if
              SQRE = 1.

       INFO   (output) INTEGER
              = 0:  successful exit.
              < 0:  if INFO = -i, the i-th argument had an  ille­
              gal value.


FURTHER DETAILS

       Based on contributions by
          Ming  Gu  and Huan Ren, Computer Science Division, Uni­
       versity of
          California at Berkeley, USA


Man(1) output converted with man2html