88 SUBROUTINE zlarge( N, A, LDA, ISEED, WORK, INFO )
100 COMPLEX*16 a( lda, * ), work( * )
107 parameter( zero = ( 0.0d+0, 0.0d+0 ),
108 $ one = ( 1.0d+0, 0.0d+0 ) )
113 COMPLEX*16 tau, wa, wb
119 INTRINSIC abs, dble, max
132 ELSE IF( lda.LT.max( 1, n ) )
THEN
136 CALL
xerbla(
'ZLARGE', -info )
146 CALL
zlarnv( 3, iseed, n-i+1, work )
147 wn =
dznrm2( n-i+1, work, 1 )
148 wa = ( wn / abs( work( 1 ) ) )*work( 1 )
149 IF( wn.EQ.zero )
THEN
153 CALL
zscal( n-i, one / wb, work( 2 ), 1 )
155 tau = dble( wb / wa )
160 CALL
zgemv(
'Conjugate transpose', n-i+1, n, one, a( i, 1 ),
161 $ lda, work, 1, zero, work( n+1 ), 1 )
162 CALL
zgerc( n-i+1, n, -tau, work, 1, work( n+1 ), 1, a( i, 1 ),
167 CALL
zgemv(
'No transpose', n, n-i+1, one, a( 1, i ), lda,
168 $ work, 1, zero, work( n+1 ), 1 )
169 CALL
zgerc( n, n-i+1, -tau, work( n+1 ), 1, work, 1, a( 1, i ),
subroutine zgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZGEMV
subroutine zgerc(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZGERC
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zlarnv(IDIST, ISEED, N, X)
ZLARNV returns a vector of random numbers from a uniform or normal distribution.
double precision function dznrm2(N, X, INCX)
DZNRM2
subroutine zlarge(N, A, LDA, ISEED, WORK, INFO)
ZLARGE
subroutine zscal(N, ZA, ZX, INCX)
ZSCAL