116 SUBROUTINE sdrvrf3( NOUT, NN, NVAL, THRESH, A, LDA, ARF, B1, B2,
117 + S_WORK_SLANGE, S_WORK_SGEQRF, TAU )
124 INTEGER LDA, NN, NOUT
129 REAL A( , * ), ARF( * ), B1( LDA, * ),
130 + b2( lda, * ), s_work_sgeqrf( * ),
131 + s_work_slange( * ), tau( * )
138 parameter( zero = ( 0.0e+0, 0.0e+0 ) ,
139 + one = ( 1.0e+0, 0.0e+0 ) )
141 parameter( ntests = 1 )
144 CHARACTER UPLO, CFORM, , TRANS, SIDE
145 INTEGER I, IFORM, IIM, IIN, INFO, IUPLO, J, M, N, NA,
146 + nfail, nrun, iside, idiag, ialpha, itrans
150 CHARACTER UPLOS( 2 ), FORMS( 2 ), TRANSS( 2 ),
151 + diags( 2 ), sides( 2 )
152 INTEGER ISEED( 4 ), ISEEDY( 4 )
153 REAL RESULT( NTESTS )
156 REAL SLAMCH, SLANGE, SLARND
157 EXTERNAL slamch, slange, slarnd
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 = SLAMCH( 'precision
' )
201 CFORM = FORMS( IFORM )
205 UPLO = UPLOS( IUPLO )
209 SIDE = SIDES( ISIDE )
213 TRANS = TRANSS( ITRANS )
217 DIAG = DIAGS( IDIAG )
221.EQ.
IF ( IALPHA 1) THEN
223.EQ.
ELSE IF ( IALPHA 2) THEN
226 ALPHA = SLARND( 2, ISEED )
236.EQ.
IF ( ISIDE1 ) THEN
262 A( I, J) = SLARND( 2, ISEED )
266.EQ.
IF ( IUPLO1 ) THEN
272 CALL SGEQRF( NA, NA, A, LDA, TAU,
273 + S_WORK_SGEQRF, LDA,
281 CALL SGELQF( NA, NA, A, LDA, TAU,
282 + S_WORK_SGEQRF, LDA,
289 CALL STRTTF( CFORM, UPLO, NA, A, LDA, ARF,
297 B1( I, J) = SLARND( 2, ISEED )
298 B2( I, J) = B1( I, J)
306 CALL STRSM( SIDE, UPLO, TRANS, DIAG, M, N,
307 + ALPHA, A, LDA, B1, LDA )
313 CALL STFSM( CFORM, SIDE, UPLO, TRANS,
314 + DIAG, M, N, ALPHA, ARF, B2,
321 B1( I, J) = B2( I, J ) - B1( I, J )
325 RESULT(1) = SLANGE( 'i
', M, N, B1, LDA,
328 RESULT(1) = RESULT(1) / SQRT( EPS )
329 + / MAX ( MAX( M, N), 1 )
331.GE.
IF( RESULT(1)THRESH ) THEN
332.EQ.
IF( NFAIL0 ) THEN
334 WRITE( NOUT, FMT = 9999 )
336 WRITE( NOUT, FMT = 9997 ) 'stfsm',
337 + CFORM, SIDE, UPLO, TRANS, DIAG, M,
353.EQ.
IF ( NFAIL0 ) THEN
354 WRITE( NOUT, FMT = 9996 ) 'stfsm', NRUN
356 WRITE( NOUT, FMT = 9995 ) 'stfsm', NFAIL, NRUN
359 9999 FORMAT( 1X, ' *** error(s) or failure(s)
while testing
stfsm
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')
end diagonal values have been computed in the(sparse) matrix id.SOL
subroutine sgeqrf(m, n, a, lda, tau, work, lwork, info)
SGEQRF
subroutine sgelqf(m, n, a, lda, tau, work, lwork, info)
SGELQF
subroutine sgeqlf(m, n, a, lda, tau, work, lwork, info)
SGEQLF
subroutine strttf(transr, uplo, n, a, lda, arf, info)
STRTTF copies a triangular matrix from the standard full format (TR) to the rectangular full packed f...
subroutine stfsm(transr, side, uplo, trans, diag, m, n, alpha, a, b, ldb)
STFSM solves a matrix equation (one operand is a triangular matrix in RFP format).
subroutine strsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
STRSM
subroutine sdrvrf3(nout, nn, nval, thresh, a, lda, arf, b1, b2, s_work_slange, s_work_sgeqrf, tau)
SDRVRF3
for(i8=*sizetab-1;i8 >=0;i8--)