202 SUBROUTINE dlasd1( NL, NR, SQRE, D, ALPHA, BETA, U, LDU, VT, LDVT,
203 $ IDXQ, IWORK, WORK, INFO )
210 INTEGER INFO, LDU, LDVT, NL, NR, SQRE
211 DOUBLE PRECISION ALPHA, BETA
214 INTEGER IDXQ( * ), IWORK( * )
215 DOUBLE PRECISION D( * ), U( LDU, * ), VT( LDVT, * ), WORK( * )
222 DOUBLE PRECISION ONE, ZERO
223 parameter( one = 1.0d+0, zero = 0.0d+0 )
226 INTEGER COLTYP, I, IDX, IDXC, IDXP, IQ, ISIGMA, IU2,
227 $ ivt2, iz, k, ldq, ldu2, ldvt2, m, n, n1, n2
228 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, ldu,
291 $ vt, ldvt, work( isigma ), work( iu2 ), ldu2,
292 $ work( ivt2 ), ldvt2, iwork( idxp ), iwork( idx ),
293 $ iwork( idxc ), idxq, iwork( coltyp ), info )
298 CALL dlasd3( nl, nr, sqre, k, d, work( iq ), ldq, work( isigma ),
299 $ u, ldu, work( iu2 ), ldu2, vt, ldvt, work( ivt2 ),
300 $ ldvt2, iwork( idxc ), iwork( coltyp ), work( iz ),
311 CALL dlascl(
'G', 0, 0, one, orgnrm, n, 1, d, n, info )
317 CALL dlamrg( n1, n2, d, 1, -1, idxq )
subroutine xerbla(srname, info)
subroutine dlamrg(n1, n2, a, dtrd1, dtrd2, index)
DLAMRG creates a permutation list to merge the entries of two independently sorted sets into a single...
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...