1 SUBROUTINE cchkge( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NNS,
2 $ ibval, nsval, thresh, tsterr, nmax, a, afac,
3 $ ainv, b, x, xact, work, rwork, iwork, nout )
13 INTEGER nm, nmax, nn, nnb, nns, nout
18 INTEGER iwork( * ), mval( * ), nbval( * ), nsval( * ),
19 $ ibval( * ), nval( * )
21 COMPLEX a( * ), afac( * ), ainv( * ), b( * ),
22 $ work( * ), x( * ), xact( * )
109 parameter( one = 1.0e+0, zero = 0.0e+0 )
111 parameter( ntypes = 11 )
113 parameter( ntests = 8 )
116 parameter( ntran = 1 )
119 LOGICAL trfcon, zerot
122 INTEGER i, im, imat, in, inb, info, ioff, irhs, itran,
123 $ izero, k, kl, ku, lda, lwork, m, mode, n, nb,
124 $ nerrs, nfail, nimat, nrhs, nrun, nt, ib,
126 REAL ainvnm, anorm, anormi, anormo, cndnum, dummy,
127 $ rcond, rcondc, rcondi, rcondo
131 CHARACTER transs( ntran )
132 INTEGER iseed( 4 ), iseedy( 4 ), plasma_transs( ntran )
133 REAL result( ntests )
154 common / infoc / infot, nunit, ok, lerr
155 common / srnamc / srnamt
158 DATA iseedy / 1988, 1989, 1990, 1991 / ,
161 $ plasma_transs / plasmanotrans /
167 path( 1: 1 ) =
'Complex precision'
175 iseed( i ) = iseedy( i )
182 $ CALL
cerrge( path, nout )
198 IF( m.LE.0 .OR. n.LE.0 )
201 DO 100 imat = 1, nimat
205 IF( .NOT.dotype( imat ) )
210 zerot = imat.GE.5 .AND. imat.LE.7
211 IF( zerot .AND. n.LT.imat-4 )
217 CALL
clatb4( path, imat, m, n, type, kl, ku, anorm, mode,
221 CALL
clatms( m, n, dist, iseed, type, rwork, mode,
222 $ cndnum, anorm, kl, ku,
'No packing', a, lda,
228 CALL
alaerh( path,
'CLATMS', info, 0,
' ', m, n, -1,
229 $ -1, -1, imat, nfail, nerrs, nout )
239 ELSE IF( imat.EQ.6 )
THEN
242 izero =
min( m, n ) / 2 + 1
244 ioff = ( izero-1 )*lda
250 CALL
claset(
'Full', m, n-izero+1, cmplx( zero ),
251 $ cmplx( zero ), a( ioff+1 ), lda )
269 IF ( (
max(m, n) / 25) .GT. nb )
THEN
273 CALL
plasma_set( plasma_inner_block_size, ib, info )
282 CALL clacpy(
'Full', m, n, a, lda, afac, lda )
292 $ CALL
alaerh( path,
'CGETRF', info, izero,
' ', m,
293 $ n, -1, -1, nb, imat, nfail, nerrs,
298 IF( m.NE.n .OR. info.GT.0 )
THEN
303 anormo = clange(
'O', m, n, a, lda, rwork )
304 anormi = clange(
'I', m, n, a, lda, rwork )
313 IF( result( k ).GE.thresh )
THEN
314 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
315 $ CALL
alahd( nout, path )
316 WRITE( nout, fmt = 9999 )m, n, nb, imat, k,
336 DO 50 itran = 1, ntran
337 trans = transs( itran )
338 plasma_trans = plasma_transs( itran )
339 IF( itran.EQ.1 )
THEN
350 $ ku, nrhs, a, lda, xact, lda, b,
354 CALL clacpy(
'Full', n, nrhs, b, lda, x, lda )
360 $ nrhs, afac, lda, iwork,
367 $ n, n, -1, -1, nrhs, imat, nfail,
370 CALL clacpy(
'Full', n, nrhs, b, lda, work,
373 $ work, lda, rwork, result( 3 ) )
378 CALL
cget04( n, nrhs, x, lda, xact, lda, rcondc,
385 IF( result( k ).GE.thresh )
THEN
386 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
387 $ CALL
alahd( nout, path )
388 WRITE( nout, fmt = 9998 )
trans, n, nb,
389 $ nrhs, imat, k, result( k )
411 CALL
alasum( path, nout, nfail, nrun, nerrs )
413 9999
format(
' M = ', i5,
', N =', i5,
', NB =', i4,
', type ', i2,
414 $
', test(', i2,
') =', g12.5 )
415 9998
format(
' TRANS=''', a1,
''', N =', i5,
', NB =', i4,
416 ', $NRHS=', i3,
', type ', i2,
', test(', i2,
') =', g12.5 )
417 9997
format(
' NORM =''', a1,
''', N =', i5,
',', 10x,
' type ', i2,
418 $
', test(', i2,
') =', g12.5 )