180 SUBROUTINE dlahr2( N, K, NB, A, LDA, TAU, T, LDT, Y, LDY )
187 INTEGER K, LDA, LDT, LDY, N, NB
190 DOUBLE PRECISION A( LDA, * ), T( LDT, NB ), TAU( NB ),
197 DOUBLE PRECISION ZERO, ONE
198 parameter( zero = 0.0d+0,
226 CALL dgemv(
'NO TRANSPOSE', n-k, i-1, -one, y(k+1,1), ldy,
227 $ a( k+i-1, 1 ), lda, one, a( k+1, i ), 1 )
239 CALL dcopy( i-1, a( k+1, i ), 1, t( 1, nb ), 1 )
240 CALL dtrmv(
'Lower',
'Transpose',
'UNIT',
242 $ lda, t( 1, nb ), 1 )
246 CALL dgemv(
'Transpose', n-k-i+1, i-1,
248 $ lda, a( k+i, i ), 1, one, t( 1, nb ), 1 )
252 CALL dtrmv(
'Upper',
'Transpose',
'NON-UNIT',
258 CALL dgemv(
'NO TRANSPOSE', n-k-i+1, i-1, -one,
260 $ lda, t( 1, nb ), 1, one, a( k+i, i ), 1 )
264 CALL dtrmv(
'Lower',
'NO TRANSPOSE',
266 $ a( k+1, 1 ), lda, t( 1, nb ), 1 )
267 CALL daxpy( i-1, -one, t( 1, nb ), 1, a( k+1, i ), 1 )
275 CALL dlarfg( n-k-i+1, a( k+i, i ), a( min( k+i+1, n ), i ), 1,
282 CALL dgemv(
'NO TRANSPOSE', n-k, n-k-i+1,
283 $ one, a( k+1, i+1 ),
284 $ lda, a( k+i, i ), 1, zero, y( k+1, i ), 1 )
285 CALL dgemv(
'Transpose', n-k-i+1, i-1,
286 $ one, a( k+i, 1 ), lda,
287 $ a( k+i, i ), 1, zero, t( 1, i ), 1 )
288 CALL dgemv(
'NO TRANSPOSE', n-k, i-1, -one,
290 $ t( 1, i ), 1, one, y( k+1, i ), 1 )
291 CALL dscal( n-k, tau( i ), y( k+1, i ), 1 )
295 CALL dscal( i-1, -tau( i ), t( 1, i ), 1 )
296 CALL dtrmv(
'Upper',
'No Transpose',
'NON-UNIT',
306 CALL dlacpy(
'ALL', k, nb, a( 1, 2 ), lda, y, ldy )
307 CALL dtrmm(
'RIGHT',
'Lower',
'NO TRANSPOSE',
309 $ one, a( k+1, 1 ), lda, y, ldy )
311 $
CALL dgemm(
'NO TRANSPOSE',
'NO TRANSPOSE', k,
313 $ a( 1, 2+nb ), lda, a( k+1+nb, 1 ), lda, one, y,
315 CALL dtrmm(
'RIGHT',
'Upper',
'NO TRANSPOSE',
317 $ one, t, ldt, y, ldy )
subroutine dlacpy(UPLO, M, N, A, LDA, B, LDB)
DLACPY copies all or part of one two-dimensional array to another.
subroutine dcopy(N, DX, INCX, DY, INCY)
DCOPY
subroutine dscal(N, DA, DX, INCX)
DSCAL
subroutine daxpy(N, DA, DX, INCX, DY, INCY)
DAXPY
subroutine dtrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
DTRMV
subroutine dgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
DGEMV
subroutine dgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
DGEMM
subroutine dtrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRMM
subroutine dlarfg(N, ALPHA, X, INCX, TAU)
DLARFG generates an elementary reflector (Householder matrix).
subroutine dlahr2(N, K, NB, A, LDA, TAU, T, LDT, Y, LDY)
DLAHR2 reduces the specified number of first columns of a general rectangular matrix A so that elemen...