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.