98 DOUBLE PRECISION FUNCTION ztzt01( M, N, A, AF, LDA, TAU, WORK,
107 INTEGER LDA, LWORK, M, N
110 COMPLEX*16 A( lda, * ), AF( lda, * ), TAU( * ),
117 DOUBLE PRECISION ZERO, ONE
118 parameter( zero = 0.0d0, one = 1.0d0 )
122 DOUBLE PRECISION NORMA
125 DOUBLE PRECISION RWORK( 1 )
128 DOUBLE PRECISION DLAMCH, ZLANGE
129 EXTERNAL dlamch, zlange
135 INTRINSIC dble, dcmplx, max
141 IF( lwork.LT.m*n+m )
THEN
142 CALL xerbla(
'ZTZT01', 8 )
148 IF( m.LE.0 .OR. n.LE.0 )
151 norma = zlange(
'One-norm', m, n, a, lda, rwork )
155 CALL zlaset(
'Full', m, n, dcmplx( zero ), dcmplx( zero ), work,
159 work( ( j-1 )*m+i ) = af( i, j )
166 CALL zlatzm(
'Right', i, n-m+1, af( i, m+1 ), lda, tau( i ),
167 $ work( ( i-1 )*m+1 ), work( m*m+1 ), m,
174 CALL zaxpy( m, dcmplx( -one ), a( 1, i ), 1,
175 $ work( ( i-1 )*m+1 ), 1 )
178 ztzt01 = zlange(
'One-norm', m, n, work, m, rwork )
180 ztzt01 =
ztzt01 / ( dlamch(
'Epsilon' )*dble( max( m, n ) ) )
subroutine zlatzm(SIDE, M, N, V, INCV, TAU, C1, C2, LDC, WORK)
ZLATZM
subroutine xerbla(SRNAME, INFO)
XERBLA
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...
double precision function ztzt01(M, N, A, AF, LDA, TAU, WORK, LWORK)
ZTZT01
subroutine zaxpy(N, ZA, ZX, INCX, ZY, INCY)
ZAXPY