98 DOUBLE PRECISION FUNCTION drzt01( M, N, A, AF, LDA, TAU, WORK,
107 INTEGER LDA, LWORK, M, N
110 DOUBLE PRECISION A( lda, * ), AF( lda, * ), TAU( * ),
117 DOUBLE PRECISION ZERO, ONE
118 parameter ( zero = 0.0d+0, one = 1.0d+0 )
122 DOUBLE PRECISION NORMA
125 DOUBLE PRECISION RWORK( 1 )
128 DOUBLE PRECISION DLAMCH, DLANGE
129 EXTERNAL dlamch, dlange
141 IF( lwork.LT.m*n+m )
THEN
142 CALL xerbla(
'DRZT01', 8 )
148 IF( m.LE.0 .OR. n.LE.0 )
151 norma = dlange(
'One-norm', m, n, a, lda, rwork )
155 CALL dlaset(
'Full', m, n, zero, zero, work, m )
158 work( ( j-1 )*m+i ) = af( i, j )
164 CALL dormrz(
'Right',
'No tranpose', m, n, m, n-m, af, lda, tau,
165 $ work, m, work( m*n+1 ), lwork-m*n, info )
170 CALL daxpy( m, -one, a( 1, i ), 1, work( ( i-1 )*m+1 ), 1 )
173 drzt01 = dlange(
'One-norm', m, n, work, m, rwork )
175 drzt01 =
drzt01 / ( dlamch(
'Epsilon' )*dble( max( m, n ) ) )
subroutine dlaset(UPLO, M, N, ALPHA, BETA, A, LDA)
DLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...
subroutine daxpy(N, DA, DX, INCX, DY, INCY)
DAXPY
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dormrz(SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
DORMRZ
double precision function drzt01(M, N, A, AF, LDA, TAU, WORK, LWORK)
DRZT01