99 DOUBLE PRECISION FUNCTION dqrt11( M, K, A, LDA, TAU, WORK, LWORK )
107 INTEGER K, LDA, LWORK, M
110 DOUBLE PRECISION A( lda, * ), TAU( * ), WORK( lwork )
116 DOUBLE PRECISION ZERO, ONE
117 parameter ( zero = 0.0d0, one = 1.0d0 )
123 DOUBLE PRECISION DLAMCH, DLANGE
124 EXTERNAL dlamch, dlange
133 DOUBLE PRECISION RDUMMY( 1 )
141 IF( lwork.LT.m*m+m )
THEN
142 CALL xerbla(
'DQRT11', 7 )
151 CALL dlaset(
'Full', m, m, zero, one, work, m )
155 CALL dorm2r(
'Left',
'No transpose', m, m, k, a, lda, tau, work,
156 $ m, work( m*m+1 ), info )
160 CALL dorm2r(
'Left',
'Transpose', m, m, k, a, lda, tau, work, m,
161 $ work( m*m+1 ), info )
164 work( ( j-1 )*m+j ) = work( ( j-1 )*m+j ) - one
167 dqrt11 = dlange(
'One-norm', m, m, work, m, rdummy ) /
168 $ ( dble( m )*dlamch(
'Epsilon' ) )
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...
double precision function dqrt11(M, K, A, LDA, TAU, WORK, LWORK)
DQRT11
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dorm2r(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO)
DORM2R multiplies a general matrix by the orthogonal matrix from a QR factorization determined by sge...