204 SUBROUTINE slasd1( NL, NR, SQRE, D, ALPHA, BETA, U, LDU, VT, LDVT,
205 $ idxq, iwork, work, info )
213 INTEGER info, ldu, ldvt, nl, nr, sqre
217 INTEGER idxq( * ), iwork( * )
218 REAL d( * ), u( ldu, * ), vt( ldvt, * ), work( * )
226 parameter( one = 1.0e+0, zero = 0.0e+0 )
229 INTEGER coltyp, i, idx, idxc, idxp, iq, isigma, iu2,
230 $ ivt2, iz, k, ldq, ldu2, ldvt2, m, n, n1, n2
247 ELSE IF( nr.LT.1 )
THEN
249 ELSE IF( ( sqre.LT.0 ) .OR. ( sqre.GT.1 ) )
THEN
253 CALL
xerbla(
'SLASD1', -info )
280 orgnrm = max( abs( alpha ), abs( beta ) )
283 IF( abs( d( i ) ).GT.orgnrm )
THEN
284 orgnrm = abs( d( i ) )
287 CALL
slascl(
'G', 0, 0, orgnrm, one, n, 1, d, n, info )
288 alpha = alpha / orgnrm
293 CALL
slasd2( nl, nr, sqre, k, d, work( iz ), alpha, beta, u, ldu,
294 $ vt, ldvt, work( isigma ), work( iu2 ), ldu2,
295 $ work( ivt2 ), ldvt2, iwork( idxp ), iwork( idx ),
296 $ iwork( idxc ), idxq, iwork( coltyp ), info )
301 CALL
slasd3( nl, nr, sqre, k, d, work( iq ), ldq, work( isigma ),
302 $ u, ldu, work( iu2 ), ldu2, vt, ldvt, work( ivt2 ),
303 $ ldvt2, iwork( idxc ), iwork( coltyp ), work( iz ),
311 CALL
slascl(
'G', 0, 0, one, orgnrm, n, 1, d, n, info )
317 CALL
slamrg( n1, n2, d, 1, -1, idxq )