91 DOUBLE PRECISION FUNCTION zrzt02( M, N, AF, LDA, TAU, WORK,
100 INTEGER LDA, LWORK, M, N
103 COMPLEX*16 AF( lda, * ), TAU( * ), WORK( lwork )
109 DOUBLE PRECISION ZERO, ONE
110 parameter ( zero = 0.0d0, one = 1.0d0 )
116 DOUBLE PRECISION RWORK( 1 )
119 DOUBLE PRECISION DLAMCH, ZLANGE
120 EXTERNAL dlamch, zlange
126 INTRINSIC dble, dcmplx, max
132 IF( lwork.LT.n*n+n )
THEN
133 CALL xerbla(
'ZRZT02', 7 )
139 IF( m.LE.0 .OR. n.LE.0 )
144 CALL zlaset(
'Full', n, n, dcmplx( zero ), dcmplx( one ), work,
149 CALL zunmrz(
'Left',
'No transpose', n, n, m, n-m, af, lda, tau,
150 $ work, n, work( n*n+1 ), lwork-n*n, info )
154 CALL zunmrz(
'Left',
'Conjugate transpose', n, n, m, n-m, af, lda,
155 $ tau, work, n, work( n*n+1 ), lwork-n*n, info )
160 work( ( i-1 )*n+i ) = work( ( i-1 )*n+i ) - one
163 zrzt02 = zlange(
'One-norm', n, n, work, n, rwork ) /
164 $ ( dlamch(
'Epsilon' )*dble( max( m, n ) ) )
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 xerbla(SRNAME, INFO)
XERBLA
double precision function zrzt02(M, N, AF, LDA, TAU, WORK, LWORK)
ZRZT02
subroutine zunmrz(SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
ZUNMRZ