88 SUBROUTINE dlarge( N, A, LDA, ISEED, WORK, INFO )
100 DOUBLE PRECISION a( lda, * ), work( * )
106 DOUBLE PRECISION zero, one
107 parameter( zero = 0.0d+0, one = 1.0d+0 )
111 DOUBLE PRECISION tau, wa, wb, wn
120 DOUBLE PRECISION dnrm2
130 ELSE IF( lda.LT.max( 1, n ) )
THEN
134 CALL
xerbla(
'DLARGE', -info )
144 CALL
dlarnv( 3, iseed, n-i+1, work )
145 wn =
dnrm2( n-i+1, work, 1 )
146 wa = sign( wn, work( 1 ) )
147 IF( wn.EQ.zero )
THEN
151 CALL
dscal( n-i, one / wb, work( 2 ), 1 )
158 CALL
dgemv(
'Transpose', n-i+1, n, one, a( i, 1 ), lda, work,
159 $ 1, zero, work( n+1 ), 1 )
160 CALL
dger( n-i+1, n, -tau, work, 1, work( n+1 ), 1, a( i, 1 ),
165 CALL
dgemv(
'No transpose', n, n-i+1, one, a( 1, i ), lda,
166 $ work, 1, zero, work( n+1 ), 1 )
167 CALL
dger( n, n-i+1, -tau, work( n+1 ), 1, work, 1, a( 1, i ),
subroutine dger(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
DGER
subroutine dlarnv(IDIST, ISEED, N, X)
DLARNV returns a vector of random numbers from a uniform or normal distribution.
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dlarge(N, A, LDA, ISEED, WORK, INFO)
DLARGE
subroutine dscal(N, DA, DX, INCX)
DSCAL
DOUBLE PRECISION function dnrm2(N, X, INCX)
DNRM2
subroutine dgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
DGEMV