Purpose
  To separate a zero singular value of a bidiagonal submatrix of
  order k, k <= p, of the bidiagonal matrix
            |Q(1) E(1)  0    ...   0   |
            | 0   Q(2) E(2)        .   |
        J = | .                    .   |
            | .                  E(p-1)|
            | 0   ...  ...   ...  Q(p) |
  with p = MIN(M,N), by annihilating one or two superdiagonal
  elements E(i-1) (if i > 1) and/or E(i) (if i < k).
Specification
      SUBROUTINE MB02NY( UPDATU, UPDATV, M, N, I, K, Q, E, U, LDU, V,
     $                   LDV, DWORK )
C     .. Scalar Arguments ..
      LOGICAL           UPDATU, UPDATV
      INTEGER           I, K, LDU, LDV, M, N
C     .. Array Arguments ..
      DOUBLE PRECISION  DWORK(*), E(*), Q(*), U(LDU,*), V(LDV,*)
Arguments
Mode Parameters
  UPDATU  LOGICAL
          Indicates whether the user wishes to accumulate in a
          matrix U the left-hand Givens rotations S, as follows:
          = .FALSE.:  Do not form U;
          = .TRUE. :  The given matrix U is updated (postmultiplied)
                      by the left-hand Givens rotations S.
  UPDATV  LOGICAL
          Indicates whether the user wishes to accumulate in a
          matrix V the right-hand Givens rotations T, as follows:
          = .FALSE.:  Do not form V;
          = .TRUE. :  The given matrix V is updated (postmultiplied)
                      by the right-hand Givens rotations T.
Input/Output Parameters
  M       (input) INTEGER
          The number of rows of the matrix U.  M >= 0.
  N       (input) INTEGER
          The number of rows of the matrix V.  N >= 0.
  I       (input) INTEGER
          The index of the negligible diagonal entry Q(I) of the
          bidiagonal matrix J, I <= p.
  K       (input) INTEGER
          The index of the last diagonal entry of the considered
          bidiagonal submatrix of J, i.e., E(K-1) is considered
          negligible, K <= p.
  Q       (input/output) DOUBLE PRECISION array, dimension (p)
          where p = MIN(M,N).
          On entry, Q must contain the diagonal entries of the
          bidiagonal matrix J.
          On exit, Q contains the diagonal entries of the
          transformed bidiagonal matrix S' J T.
  E       (input/output) DOUBLE PRECISION array, dimension (p-1)
          On entry, E must contain the superdiagonal entries of J.
          On exit, E contains the superdiagonal entries of the
          transformed bidiagonal matrix S' J T.
  U       (input/output) DOUBLE PRECISION array, dimension (LDU,p)
          On entry, if UPDATU = .TRUE., U must contain the M-by-p
          left transformation matrix.
          On exit, if UPDATU = .TRUE., the Givens rotations S on the
          left, annihilating E(i) if i < k, have been postmultiplied
          into U.
          U is not referenced if UPDATU = .FALSE..
  LDU     INTEGER
          The leading dimension of the array U.
          LDU >= max(1,M) if UPDATU = .TRUE.;
          LDU >= 1        if UPDATU = .FALSE..
  V       (input/output) DOUBLE PRECISION array, dimension (LDV,p)
          On entry, if UPDATV = .TRUE., V must contain the N-by-p
          right transformation matrix.
          On exit, if UPDATV = .TRUE., the Givens rotations T on the
          right, annihilating E(i-1) if i > 1,  have been
          postmultiplied into V.
          V is not referenced if UPDATV = .FALSE..
  LDV     INTEGER
          The leading dimension of the array V.
          LDV >= max(1,N) if UPDATV = .TRUE.;
          LDV >= 1        if UPDATV = .FALSE..
Workspace
  DWORK   DOUBLE PRECISION array, dimension (MAX(1,LDWORK))
          LDWORK >= 2*MAX(K-I,I-1),  if UPDATV = UPDATU = .TRUE.;
          LDWORK >= 2*(K-I), if UPDATU = .TRUE., UPDATV = .FALSE.;
          LDWORK >= 2*(I-1), if UPDATV = .TRUE., UPDATU = .FALSE.;
          LDWORK >= 1,       if UPDATU = UPDATV = .FALSE..
Method
  Let the considered bidiagonal submatrix be
            |Q(1) E(1)  0                    ...   0   |
            | 0   Q(2) E(2)                        .   |
            | .                                    .   |
            | .           Q(i-1) E(i-1)            .   |
       Jk = | .                   Q(i) E(i)        .   |.
            | .                       Q(i+1) .     .   |
            | .                              ..    .   |
            | .                                  E(k-1)|
            | 0    ...                       ...  Q(k) |
  A zero singular value of Jk manifests itself by a zero diagonal
  entry Q(i) or in practice, a negligible value of Q(i).
  When a negligible diagonal element Q(i) in Jk is present, the
  bidiagonal submatrix Jk is split by the routine into 2 or 3
  unreduced bidiagonal submatrices by annihilating E(i) (if i < k)
  using Givens rotations S on the left and by annihilating E(i-1)
  (if i > 1) using Givens rotations T on the right until Jk is
  reduced to the form:
            |Q(1) E(1)  0                ...   0   |
            | 0         .                ...   .   |
            | .                          ...   .   |
            | .       Q(i-1) 0                 .   |
  S' Jk T = | .              0   0             .   |.
            | .                 Q(i+1)   .     .   |
            | .                          ..    .   |
            | .                              E(k-1)|
            | 0    ...                   ...  Q(k) |
  For more details, see [1, pp.11.12-11.14].
References
  [1] Dongarra, J.J., Bunch, J.R., Moler C.B. and Stewart, G.W.
      LINPACK User's Guide.
      SIAM, Philadelphia, 1979.
Numerical Aspects
The algorithm is backward stable.Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None