1 SUBROUTINE dchkge( 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
14 DOUBLE PRECISION thresh
18 INTEGER ibval( * ), iwork( * ), mval( * ), nbval( * ),
19 $ nsval( * ), nval( * )
20 DOUBLE PRECISION a( * ), afac( * ), ainv( * ), b( * ),
21 $ rwork( * ), work( * ), x( * ), xact( * )
103 DOUBLE PRECISION one, zero
104 parameter( one = 1.0d+0, zero = 0.0d+0 )
106 parameter( ntypes = 11 )
108 parameter( ntests = 8 )
111 parameter( ntran = 1 )
114 LOGICAL trfcon, zerot
117 INTEGER i, im, imat, ib, in, inb, info, ioff, irhs,
118 $ itran, izero, k, kl, ku, lda, lwork, m, mode,
119 $ n, nb, nerrs, nfail, nimat, nrhs, nrun, nt
120 DOUBLE PRECISION ainvnm, anorm, anormi, anormo, cndnum, dummy,
121 $ rcond, rcondc, rcondi, rcondo
122 INTEGER hl( 2 ), hpiv( 2 )
126 CHARACTER transs( ntran )
127 INTEGER iseed( 4 ), iseedy( 4 ), plasma_transs( ntran )
128 DOUBLE PRECISION result( ntests )
131 DOUBLE PRECISION dget06, dlange
149 common / infoc / infot, nunit, ok, lerr
150 common / srnamc / srnamt
153 DATA iseedy / 1988, 1989, 1990, 1991 / ,
156 $ plasma_transs / plasmanotrans /
162 path( 1: 1 ) =
'Double precision'
170 iseed( i ) = iseedy( i )
177 $ CALL
derrge( path, nout )
193 IF( m.LE.0 .OR. n.LE.0 )
196 DO 100 imat = 1, nimat
200 IF( .NOT.dotype( imat ) )
205 zerot = imat.GE.5 .AND. imat.LE.7
206 IF( zerot .AND. n.LT.imat-4 )
212 CALL
dlatb4( path, imat, m, n, type, kl, ku, anorm, mode,
216 CALL
dlatms( m, n, dist, iseed, type, rwork, mode,
217 $ cndnum, anorm, kl, ku,
'No packing', a, lda,
223 CALL
alaerh( path,
'DLATMS', info, 0,
' ', m, n, -1,
224 $ -1, -1, imat, nfail, nerrs, nout )
234 ELSE IF( imat.EQ.6 )
THEN
237 izero =
min( m, n ) / 2 + 1
239 ioff = ( izero-1 )*lda
245 CALL
dlaset(
'Full', m, n-izero+1, zero, zero,
258 IF ( (
max(m, n) / 25) .GT. nb )
THEN
262 CALL
plasma_set( plasma_inner_block_size, ib, info )
271 CALL dlacpy(
'Full', m, n, a, lda, afac, lda )
281 $ CALL
alaerh( path,
'DGETRF', info, izero,
' ', m,
282 $ n, -1, -1, nb, imat, nfail, nerrs,
287 IF( m.NE.n .OR. info.GT.0 )
THEN
292 anormo = dlange(
'O', m, n, a, lda, rwork )
293 anormi = dlange(
'I', m, n, a, lda, rwork )
302 IF( result( k ).GE.thresh )
THEN
303 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
304 $ CALL
alahd( nout, path )
305 WRITE( nout, fmt = 9999 )m, n, nb, imat, k,
325 DO 50 itran = 1, ntran
326 trans = transs( itran )
327 plasma_trans = plasma_transs( itran )
328 IF( itran.EQ.1 )
THEN
339 $ ku, nrhs, a, lda, xact, lda, b,
343 CALL dlacpy(
'Full', n, nrhs, b, lda, x, lda )
349 $ nrhs, afac, lda, iwork,
356 $ n, n, -1, -1, nrhs, imat, nfail,
359 CALL dlacpy(
'Full', n, nrhs, b, lda, work,
362 $ work, lda, rwork, result( 3 ) )
368 CALL
dget04( n, nrhs, x, lda, xact, lda, rcondc,
375 IF( result( k ).GE.thresh )
THEN
376 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
377 $ CALL
alahd( nout, path )
378 WRITE( nout, fmt = 9998 )
trans, n, nb,
379 $ nrhs, imat, k, result( k )
400 CALL
alasum( path, nout, nfail, nrun, nerrs )
402 9999
format(
' M = ', i5,
', N =', i5,
', NB =', i4,
', type ', i2,
403 $
', test(', i2,
') =', g12.5 )
404 9998
format(
' TRANS=''', a1,
''', N =', i5,
', NB =', i4 ,
405 ', $ NRHS=', i3,
',type ', i2,
', test(', i2,
') =', g12.5 )
406 9997
format(
' NORM =''', a1,
''', N =', i5,
',', 10x,
' type ', i2,
407 $
', test(', i2,
') =', g12.5 )