89 DOUBLE PRECISION FUNCTION zrzt02( M, N, AF, LDA, TAU, WORK,
97 INTEGER lda, lwork, m, n
100 COMPLEX*16 af( lda, * ), tau( * ), work( lwork )
106 DOUBLE PRECISION zero, one
107 parameter( zero = 0.0d0, one = 1.0d0 )
113 DOUBLE PRECISION rwork( 1 )
123 INTRINSIC dble, dcmplx, max
129 IF( lwork.LT.n*n+n )
THEN
130 CALL xerbla(
'ZRZT02', 7 )
136 IF( m.LE.0 .OR. n.LE.0 )
141 CALL zlaset(
'Full', n, n, dcmplx( zero ), dcmplx( one ), work,
146 CALL zunmrz(
'Left',
'No transpose', n, n, m, n-m, af, lda, tau,
147 $ work, n, work( n*n+1 ), lwork-n*n, info )
151 CALL zunmrz(
'Left',
'Conjugate transpose', n, n, m, n-m, af, lda,
152 $ tau, work, n, work( n*n+1 ), lwork-n*n, info )
157 work( ( i-1 )*n+i ) = work( ( i-1 )*n+i ) - one
161 $ (
dlamch(
'Epsilon' )*dble( max( m, n ) ) )
subroutine xerbla(srname, info)
double precision function dlamch(cmach)
DLAMCH
double precision function zlange(norm, m, n, a, lda, work)
ZLANGE returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...
subroutine zlaset(uplo, m, n, alpha, beta, a, lda)
ZLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine zunmrz(side, trans, m, n, k, l, a, lda, tau, c, ldc, work, lwork, info)
ZUNMRZ
double precision function zrzt02(m, n, af, lda, tau, work, lwork)
ZRZT02