97 DOUBLE PRECISION FUNCTION zqrt11( M, K, A, LDA, TAU, WORK, LWORK )
104 INTEGER k, lda, lwork, m
107 COMPLEX*16 a( lda, * ), tau( * ), work( lwork )
113 DOUBLE PRECISION zero, one
114 parameter( zero = 0.0d0, one = 1.0d0 )
127 INTRINSIC dble, dcmplx
130 DOUBLE PRECISION rdummy( 1 )
138 IF( lwork.LT.m*m+m )
THEN
139 CALL xerbla(
'ZQRT11', 7 )
148 CALL zlaset(
'Full', m, m, dcmplx( zero ), dcmplx( one ), work,
153 CALL zunm2r(
'Left',
'No transpose', m, m, k, a, lda, tau, work,
154 $ m, work( m*m+1 ), info )
158 CALL zunm2r(
'Left',
'Conjugate transpose', m, m, k, a, lda, tau,
159 $ work, m, work( m*m+1 ), info )
162 work( ( j-1 )*m+j ) = work( ( j-1 )*m+j ) - one
166 $ ( dble( m )*
dlamch(
'Epsilon' ) )
double precision function dlamch(CMACH)
DLAMCH
subroutine xerbla(SRNAME, INFO)
XERBLA
double precision function zqrt11(M, K, A, LDA, TAU, WORK, LWORK)
ZQRT11
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 zunm2r(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO)
ZUNM2R multiplies a general matrix by the unitary matrix from a QR factorization determined by cgeqrf...