86 SUBROUTINE dlarge( N, A, LDA, ISEED, WORK, INFO )
97 DOUBLE PRECISION A( LDA, * ), WORK( * )
103 DOUBLE PRECISION ZERO, ONE
104 parameter( zero = 0.0d+0, one = 1.0d+0 )
108 DOUBLE PRECISION TAU, WA, WB, WN
117 DOUBLE PRECISION DNRM2
127 ELSE IF( lda.LT.max( 1, n ) )
THEN
131 CALL xerbla(
'DLARGE', -info )
141 CALL dlarnv( 3, iseed, n-i+1, work )
142 wn = dnrm2( n-i+1, work, 1 )
143 wa = sign( wn, work( 1 ) )
144 IF( wn.EQ.zero )
THEN
148 CALL dscal( n-i, one / wb, work( 2 ), 1 )
155 CALL dgemv(
'Transpose', n-i+1, n, one, a( i, 1 ), lda, work,
156 $ 1, zero, work( n+1 ), 1 )
157 CALL dger( n-i+1, n, -tau, work, 1, work( n+1 ), 1, a( i, 1 ),
162 CALL dgemv(
'No transpose', n, n-i+1, one, a( 1, i ), lda,
163 $ work, 1, zero, work( n+1 ), 1 )
164 CALL dger( n, n-i+1, -tau, work( n+1 ), 1, work, 1, a( 1, i ),
subroutine dgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
DGEMV
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.