116 SUBROUTINE ddrvrf3( NOUT, NN, NVAL, THRESH, A, LDA, ARF, B1, B2,
117 + D_WORK_DLANGE, D_WORK_DGEQRF, TAU )
124 INTEGER LDA, NN, NOUT
125 DOUBLE PRECISION THRESH
129 DOUBLE PRECISION A( LDA, * ), ARF( * ), B1( LDA, * ),
130 + b2( lda, * ), d_work_dgeqrf( * ),
131 + d_work_dlange( * ), tau( * )
137 DOUBLE PRECISION ZERO, ONE
138 parameter( zero = ( 0.0d+0, 0.0d+0 ) ,
139 + one = ( 1.0d+0, 0.0d+0 ) )
141 parameter( ntests = 1 )
144 CHARACTER UPLO, CFORM, DIAG, TRANS, SIDE
145 INTEGER I, IFORM, IIM, IIN, INFO, IUPLO, J, M, N, NA,
146 + nfail, nrun, iside, idiag, ialpha, itrans
147 DOUBLE PRECISION EPS, ALPHA
150 CHARACTER UPLOS( 2 ), FORMS( 2 ), TRANSS( 2 ),
151 + diags( 2 ), sides( 2 )
152 INTEGER ISEED( 4 ), ISEEDY( 4 )
153 DOUBLE PRECISION RESULT( NTESTS )
156 DOUBLE PRECISION DLAMCH, DLANGE, DLARND
157 EXTERNAL dlamch, dlange, dlarnd
169 COMMON / srnamc / srnamt
172 DATA iseedy / 1988, 1989, 1990, 1991 /
173 DATA uplos /
'U',
'L' /
174 DATA forms /
'N',
'T' /
175 DATA sides /
'L',
'R' /
176 DATA transs /
'N',
'T' /
177 DATA diags /
'N',
'U' /
187 iseed( i ) = iseedy( i )
189 eps = dlamch(
'Precision' )
201 cform = forms( iform )
205 uplo = uplos( iuplo )
209 side = sides( iside )
213 trans = transs( itrans )
217 diag = diags( idiag )
221 IF ( ialpha.EQ. 1)
THEN
223 ELSE IF ( ialpha.EQ. 2)
THEN
226 alpha = dlarnd( 2, iseed )
236 IF ( iside.EQ.1 )
THEN
262 a( i, j) = dlarnd( 2, iseed )
266 IF ( iuplo.EQ.1 )
THEN
272 CALL dgeqrf( na, na, a, lda, tau,
273 + d_work_dgeqrf, lda,
281 CALL dgelqf( na, na, a, lda, tau,
282 + d_work_dgeqrf, lda,
289 CALL dtrttf( cform, uplo, na, a, lda, arf,
297 b1( i, j) = dlarnd( 2, iseed )
298 b2( i, j) = b1( i, j)
306 CALL dtrsm( side, uplo, trans, diag, m
307 + alpha, a, lda, b1, lda )
313 CALL dtfsm( cform, side, uplo, trans,
314 + diag, m, n, alpha, arf, b2,
321 b1( i, j) = b2( i, j ) - b1( i, j )
325 result(1) = dlange(
'I', m, n, b1, lda,
328 result(1) = result(1) / sqrt( eps )
331 IF( result(1).GE.thresh )
THEN
334 WRITE( nout, fmt = 9999 )
336 WRITE( nout, fmt = 9997 )
'DTFSM',
337 + cform, side, uplo, trans, diag, m,
353 IF ( nfail.EQ.0 )
THEN
354 WRITE( nout, fmt = 9996 )
'DTFSM', nrun
356 WRITE( nout, fmt = 9995 )
'DTFSM', nfail, nrun
359 9999
FORMAT( 1x,
' *** Error(s) or Failure(s) while testing DTFSM
361 9997
FORMAT( 1x,
' Failure in ',a5,
', CFORM=''',a1,
''',',
362 +
' SIDE=''',a1,
''',',
' UPLO=''',a1,
''',',
' TRANS=''',a1,
''',',
363 +
' DIAG=''',a1,
''',',
' M=',i3,
', N =', i3,
', test=',g12.5)
364 9996
FORMAT( 1x,
'All tests for ',a5,
' auxiliary routine passed the ',
365 +
'threshold ( ',i5,
' tests run)')
366 9995
FORMAT( 1x, a6,
' auxiliary routine: ',i5,
' out of ',i5,
367 +
' tests failed to pass the threshold')
subroutine dtfsm(transr, side, uplo, trans, diag, m, n, alpha, a, b, ldb)
DTFSM solves a matrix equation (one operand is a triangular matrix in RFP format).
subroutine dtrttf(transr, uplo, n, a, lda, arf, info)
DTRTTF copies a triangular matrix from the standard full format (TR) to the rectangular full packed f...
subroutine dtrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
DTRSM
subroutine ddrvrf3(nout, nn, nval, thresh, a, lda, arf, b1, b2, d_work_dlange, d_work_dgeqrf, tau)
DDRVRF3