119 SUBROUTINE cdrvrf3( NOUT, NN, NVAL, THRESH, A, LDA, ARF, B1, B2,
120 + s_work_clange, c_work_cgeqrf, tau )
128 INTEGER LDA, NN, NOUT
133 REAL S_WORK_CLANGE( * )
134 COMPLEX A( lda, * ), ARF( * ), B1( lda, * ),
136 COMPLEX C_WORK_CGEQRF( * ), TAU( * )
143 parameter ( zero = ( 0.0e+0, 0.0e+0 ) ,
144 + one = ( 1.0e+0, 0.0e+0 ) )
146 parameter ( ntests = 1 )
149 CHARACTER UPLO, CFORM, DIAG, TRANS, SIDE
150 INTEGER I, IFORM, IIM, IIN, INFO, IUPLO, J, M, N, NA,
151 + nfail, nrun, iside, idiag, ialpha, itrans
156 CHARACTER UPLOS( 2 ), FORMS( 2 ), TRANSS( 2 ),
157 + diags( 2 ), sides( 2 )
158 INTEGER ISEED( 4 ), ISEEDY( 4 )
159 REAL RESULT( ntests )
164 EXTERNAL slamch, clarnd, clange
176 COMMON / srnamc / srnamt
179 DATA iseedy / 1988, 1989, 1990, 1991 /
180 DATA uplos /
'U',
'L' /
181 DATA forms /
'N',
'C' /
182 DATA sides /
'L',
'R' /
183 DATA transs /
'N',
'C' /
184 DATA diags /
'N',
'U' /
194 iseed( i ) = iseedy( i )
196 eps = slamch(
'Precision' )
208 cform = forms( iform )
212 uplo = uplos( iuplo )
216 side = sides( iside )
220 trans = transs( itrans )
224 diag = diags( idiag )
228 IF ( ialpha.EQ. 1)
THEN
230 ELSE IF ( ialpha.EQ. 1)
THEN
233 alpha = clarnd( 4, iseed )
243 IF ( iside.EQ.1 )
THEN
269 a( i, j) = clarnd( 4, iseed )
273 IF ( iuplo.EQ.1 )
THEN
279 CALL cgeqrf( na, na, a, lda, tau,
280 + c_work_cgeqrf, lda,
288 CALL cgelqf( na, na, a, lda, tau,
289 + c_work_cgeqrf, lda,
299 a( j, j) = a(j,j) * clarnd( 5, iseed )
305 CALL ctrttf( cform, uplo, na, a, lda, arf,
313 b1( i, j) = clarnd( 4, iseed )
314 b2( i, j) = b1( i, j)
322 CALL ctrsm( side, uplo, trans, diag, m, n,
323 + alpha, a, lda, b1, lda )
329 CALL ctfsm( cform, side, uplo, trans,
330 + diag, m, n, alpha, arf, b2,
337 b1( i, j) = b2( i, j ) - b1( i, j )
341 result(1) = clange(
'I', m, n, b1, lda,
344 result(1) = result(1) / sqrt( eps )
345 + / max( max( m, n), 1 )
347 IF( result(1).GE.thresh )
THEN
348 IF( nfail.EQ.0 )
THEN
350 WRITE( nout, fmt = 9999 )
352 WRITE( nout, fmt = 9997 )
'CTFSM',
353 + cform, side, uplo, trans, diag, m,
369 IF ( nfail.EQ.0 )
THEN
370 WRITE( nout, fmt = 9996 )
'CTFSM', nrun
372 WRITE( nout, fmt = 9995 )
'CTFSM', nfail, nrun
375 9999
FORMAT( 1x,
' *** Error(s) or Failure(s) while testing CTFSM
377 9997
FORMAT( 1x,
' Failure in ',a5,
', CFORM=''',a1,
''',',
378 +
' SIDE=''',a1,
''',',
' UPLO=''',a1,
''',',
' TRANS=''',a1,
''',',
379 +
' DIAG=''',a1,
''',',
' M=',i3,
', N =', i3,
', test=',g12.5)
380 9996
FORMAT( 1x,
'All tests for ',a5,
' auxiliary routine passed the ',
381 +
'threshold ( ',i5,
' tests run)')
382 9995
FORMAT( 1x, a6,
' auxiliary routine: ',i5,
' out of ',i5,
383 +
' tests failed to pass the threshold')
subroutine cgeqlf(M, N, A, LDA, TAU, WORK, LWORK, INFO)
CGEQLF
subroutine cdrvrf3(NOUT, NN, NVAL, THRESH, A, LDA, ARF, B1, B2, S_WORK_CLANGE, C_WORK_CGEQRF, TAU)
CDRVRF3
subroutine ctrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
CTRSM
subroutine cgelqf(M, N, A, LDA, TAU, WORK, LWORK, INFO)
CGELQF
subroutine ctfsm(TRANSR, SIDE, UPLO, TRANS, DIAG, M, N, ALPHA, A, B, LDB)
CTFSM solves a matrix equation (one operand is a triangular matrix in RFP format).
subroutine cgeqrf(M, N, A, LDA, TAU, WORK, LWORK, INFO)
CGEQRF
subroutine ctrttf(TRANSR, UPLO, N, A, LDA, ARF, INFO)
CTRTTF copies a triangular matrix from the standard full format (TR) to the rectangular full packed f...