148      SUBROUTINE slasd0( N, SQRE, D, E, U, LDU, VT, LDVT, SMLSIZ,
 
  157      INTEGER            INFO, LDU, LDVT, N, SMLSIZ, SQRE
 
  161      REAL               D( * ), E( * ), U( LDU, * ), VT( LDVT, * ),
 
  168      INTEGER            I, I1, IC, IDXQ, IDXQC, IM1, INODE, ITEMP, IWK,
 
  169     $                   J, LF, LL, LVL, M, NCC, ND, NDB1, NDIML, NDIMR,
 
  170     $                   nl, nlf, nlp1, nlvl, nr, nrf, nrp1, sqrei
 
  184      ELSE IF( ( sqre.LT.0 ) .OR. ( sqre.GT.1 ) ) 
THEN 
  192      ELSE IF( ldvt.LT.m ) 
THEN 
  194      ELSE IF( smlsiz.LT.3 ) 
THEN 
  198         CALL xerbla( 
'SLASD0', -info )
 
  204      IF( n.LE.smlsiz ) 
THEN 
  205         CALL slasdq( 
'U', sqre, n, m, n, 0, d, e, vt, ldvt, u, ldu,
 
  218      CALL slasdt( n, nlvl, nd, iwork( inode ), iwork( ndiml ),
 
  219     $             iwork( ndimr ), smlsiz )
 
  235         ic = iwork( inode+i1 )
 
  236         nl = iwork( ndiml+i1 )
 
  238         nr = iwork( ndimr+i1 )
 
  243         CALL slasdq( 
'U', sqrei, nl, nlp1, nl, ncc, d( nlf ),
 
  245     $                vt( nlf, nlf ), ldvt, u( nlf, nlf ), ldu,
 
  246     $                u( nlf, nlf ), ldu, work, info )
 
  250         itemp = idxq + nlf - 2
 
  260         CALL slasdq( 
'U', sqrei, nr, nrp1, nr, ncc, d( nrf ),
 
  262     $                vt( nrf, nrf ), ldvt, u( nrf, nrf ), ldu,
 
  263     $                u( nrf, nrf ), ldu, work, info )
 
  269            iwork( itemp+j-1 ) = j
 
  275      DO 50 lvl = nlvl, 1, -1
 
  289            ic = iwork( inode+im1 )
 
  290            nl = iwork( ndiml+im1 )
 
  291            nr = iwork( ndimr+im1 )
 
  293            IF( ( sqre.EQ.0 ) .AND. ( i.EQ.ll ) ) 
THEN 
  298            idxqc = idxq + nlf - 1
 
  301            CALL slasd1( nl, nr, sqrei, d( nlf ), alpha, beta,
 
  302     $                   u( nlf, nlf ), ldu, vt( nlf, nlf ), ldvt,
 
  303     $                   iwork( idxqc ), iwork( iwk ), work, info )
 
 
subroutine slasd0(n, sqre, d, e, u, ldu, vt, ldvt, smlsiz, iwork, work, info)
SLASD0 computes the singular values of a real upper bidiagonal n-by-m matrix B with diagonal d and of...
subroutine slasd1(nl, nr, sqre, d, alpha, beta, u, ldu, vt, ldvt, idxq, iwork, work, info)
SLASD1 computes the SVD of an upper bidiagonal matrix B of the specified size. Used by sbdsdc.
subroutine slasdq(uplo, sqre, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu, c, ldc, work, info)
SLASDQ computes the SVD of a real bidiagonal matrix with diagonal d and off-diagonal e....