96 DOUBLE PRECISION FUNCTION zrzt01( M, N, A, AF, LDA, TAU, WORK,
104 INTEGER lda, lwork, m, n
107 COMPLEX*16 a( lda, * ), af( lda, * ), tau( * ),
114 DOUBLE PRECISION zero, one
115 parameter( zero = 0.0d0, one = 1.0d0 )
119 DOUBLE PRECISION norma
122 DOUBLE PRECISION rwork( 1 )
132 INTRINSIC dble, dcmplx, max
138 IF( lwork.LT.m*n+m )
THEN
139 CALL xerbla(
'ZRZT01', 8 )
145 IF( m.LE.0 .OR. n.LE.0 )
148 norma =
zlange(
'One-norm', m, n, a, lda, rwork )
152 CALL zlaset(
'Full', m, n, dcmplx( zero ), dcmplx( zero ), work,
156 work( ( j-1 )*m+i ) = af( i, j )
162 CALL zunmrz(
'Right',
'No transpose', m, n, m, n-m, af, lda, tau,
163 $ work, m, work( m*n+1 ), lwork-m*n, info )
168 CALL zaxpy( m, dcmplx( -one ), a( 1, i ), 1,
169 $ work( ( i-1 )*m+1 ), 1 )
subroutine xerbla(srname, info)
subroutine zaxpy(n, za, zx, incx, zy, incy)
ZAXPY
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 zrzt01(m, n, a, af, lda, tau, work, lwork)
ZRZT01