200 SUBROUTINE dlasd1( NL, NR, SQRE, D, ALPHA, BETA, U, LDU, VT,
202 $ IDXQ, IWORK, WORK, INFO )
209 INTEGER INFO, LDU, LDVT, NL, NR, SQRE
210 DOUBLE PRECISION ALPHA, BETA
213 INTEGER IDXQ( * ), IWORK( * )
214 DOUBLE PRECISION D( * ), U( LDU, * ), VT( LDVT, * ), WORK( * )
221 DOUBLE PRECISION ONE, ZERO
222 PARAMETER ( ONE = 1.0d+0, zero = 0.0d+0 )
225 INTEGER COLTYP, I, IDX, IDXC, IDXP, IQ, ISIGMA, IU2,
226 $ IVT2, IZ, K, LDQ, LDU2, LDVT2, M, N, N1, N2
227 DOUBLE PRECISION ORGNRM
244 ELSE IF( nr.LT.1 )
THEN
246 ELSE IF( ( sqre.LT.0 ) .OR. ( sqre.GT.1 ) )
THEN
250 CALL xerbla(
'DLASD1', -info )
277 orgnrm = max( abs( alpha ), abs( beta ) )
280 IF( abs( d( i ) ).GT.orgnrm )
THEN
281 orgnrm = abs( d( i ) )
284 CALL dlascl(
'G', 0, 0, orgnrm, one, n, 1, d, n, info )
285 alpha = alpha / orgnrm
290 CALL dlasd2( 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 dlasd3( 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 dlascl(
'G', 0, 0, one, orgnrm, n, 1, d, n, info )
319 CALL dlamrg( n1, n2, d, 1, -1, idxq )
subroutine dlascl(type, kl, ku, cfrom, cto, m, n, a, lda, info)
DLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom.
subroutine dlasd1(nl, nr, sqre, d, alpha, beta, u, ldu, vt, ldvt, idxq, iwork, work, info)
DLASD1 computes the SVD of an upper bidiagonal matrix B of the specified size. Used by sbdsdc.
subroutine dlasd2(nl, nr, sqre, k, d, z, alpha, beta, u, ldu, vt, ldvt, dsigma, u2, ldu2, vt2, ldvt2, idxp, idx, idxc, idxq, coltyp, info)
DLASD2 merges the two sets of singular values together into a single sorted set. Used by sbdsdc.
subroutine dlasd3(nl, nr, sqre, k, d, q, ldq, dsigma, u, ldu, u2, ldu2, vt, ldvt, vt2, ldvt2, idxc, ctot, z, info)
DLASD3 finds all square roots of the roots of the secular equation, as defined by the values in D and...