200 SUBROUTINE slasd1( NL, NR, SQRE, D, ALPHA, BETA, U, LDU, VT,
202 $ IDXQ, IWORK, WORK, INFO )
209 INTEGER INFO, LDU, LDVT, NL, NR, SQRE
213 INTEGER IDXQ( * ), IWORK( * )
214 REAL D( * ), U( LDU, * ), VT( LDVT, * ), WORK( * )
222 PARAMETER ( ONE = 1.0e+0, zero = 0.0e+0 )
225 INTEGER COLTYP, I, IDX, IDXC, IDXP, IQ, ISIGMA, IU2,
226 $ IVT2, IZ, K, LDQ, LDU2, LDVT2, M, N, N1, N2
244 ELSE IF( nr.LT.1 )
THEN
246 ELSE IF( ( sqre.LT.0 ) .OR. ( sqre.GT.1 ) )
THEN
250 CALL xerbla(
'SLASD1', -info )
277 orgnrm = max( abs( alpha ), abs( beta ) )
280 IF( abs( d( i ) ).GT.orgnrm )
THEN
281 orgnrm = abs( d( i ) )
284 CALL slascl(
'G', 0, 0, orgnrm, one, n, 1, d, n, info )
285 alpha = alpha / orgnrm
290 CALL slasd2( nl, nr, sqre, k, d, work( iz ), alpha, beta, u,
292 $ vt, ldvt, work( isigma ), work( iu2 ), ldu2,
293 $ work( ivt2 ), ldvt2, iwork( idxp ), iwork( idx ),
294 $ iwork( idxc ), idxq, iwork( coltyp ), info )
299 CALL slasd3( nl, nr, sqre, k, d, work( iq ), ldq,
301 $ u, ldu, work( iu2 ), ldu2, vt, ldvt, work( ivt2 ),
302 $ ldvt2, iwork( idxc ), iwork( coltyp ), work( iz ),
313 CALL slascl(
'G', 0, 0, one, orgnrm, n, 1, d, n, info )
319 CALL slamrg( n1, n2, d, 1, -1, idxq )
subroutine slascl(type, kl, ku, cfrom, cto, m, n, a, lda, info)
SLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom.
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 slasd2(nl, nr, sqre, k, d, z, alpha, beta, u, ldu, vt, ldvt, dsigma, u2, ldu2, vt2, ldvt2, idxp, idx, idxc, idxq, coltyp, info)
SLASD2 merges the two sets of singular values together into a single sorted set. Used by sbdsdc.
subroutine slasd3(nl, nr, sqre, k, d, q, ldq, dsigma, u, ldu, u2, ldu2, vt, ldvt, vt2, ldvt2, idxc, ctot, z, info)
SLASD3 finds all square roots of the roots of the secular equation, as defined by the values in D and...