1 SUBROUTINE cchkpo( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL,
2 $ thresh, tsterr, nmax, a, afac, ainv, b, x,
3 $ xact, work, rwork, nout )
13 INTEGER nmax, nn, nnb, nns, nout
18 INTEGER nbval( * ), nsval( * ), nval( * )
20 COMPLEX a( * ), afac( * ), ainv( * ), b( * ),
21 $ work( * ), x( * ), xact( * )
93 parameter( czero = ( 0.0e+0, 0.0e+0 ) )
95 parameter( ntypes = 9 )
97 parameter( ntests = 8 )
101 CHARACTER dist, type,
uplo, xtype
103 INTEGER i, imat, in, inb, info, ioff, irhs, iuplo,
104 $ izero, k, kl, ku, lda, mode, n, nb, nerrs,
105 $ nfail, nimat, nrhs, nrun, plasma_uplo
106 REAL anorm, cndnum, rcond, rcondc
110 INTEGER plasma_uplos( 2 )
111 INTEGER iseed( 4 ), iseedy( 4 )
112 REAL result( ntests )
130 common / infoc / infot, nunit, ok, lerr
131 common / srnamc / srnamt
137 DATA iseedy / 1988, 1989, 1990, 1991 /
138 DATA uplos /
'U',
'L' /
139 DATA plasma_uplos / plasmaupper, plasmalower /
145 path( 1: 1 ) =
'Complex precision'
151 iseed( i ) = iseedy( i )
157 $ CALL
cerrpo( path, nout )
171 DO 110 imat = 1, nimat
175 IF( .NOT.dotype( imat ) )
180 zerot = imat.GE.3 .AND. imat.LE.5
181 IF( zerot .AND. n.LT.imat-2 )
187 uplo = uplos( iuplo )
188 plasma_uplo = plasma_uplos( iuplo )
193 CALL
clatb4( path, imat, n, n, type, kl, ku, anorm, mode,
197 CALL
clatms( n, n, dist, iseed, type, rwork, mode,
198 $ cndnum, anorm, kl, ku,
uplo, a, lda, work,
204 CALL
alaerh( path,
'CLATMS', info, 0,
uplo, n, n, -1,
205 $ -1, -1, imat, nfail, nerrs, nout )
215 ELSE IF( imat.EQ.4 )
THEN
220 ioff = ( izero-1 )*lda
224 IF( iuplo.EQ.1 )
THEN
225 DO 20 i = 1, izero - 1
235 DO 40 i = 1, izero - 1
250 CALL
claipd( n, a, lda+1, 0 )
257 IF ( (n / 25) .GT. nb )
THEN
264 CALL clacpy(
uplo, n, n, a, lda, afac, lda )
270 IF( info.NE.izero )
THEN
271 CALL
alaerh( path,
'CPOTRF', info, izero,
uplo, n,
272 $ n, -1, -1, nb, imat, nfail, nerrs,
285 CALL clacpy(
uplo, n, n, afac, lda, ainv, lda )
286 CALL
cpot01(
uplo, n, a, lda, ainv, lda, rwork,
292 CALL clacpy(
uplo, n, n, afac, lda, ainv, lda )
300 $ CALL
alaerh( path,
'CPOTRI', info, 0,
uplo, n, n,
301 $ -1, -1, -1, imat, nfail, nerrs, nout )
303 CALL
cpot03(
uplo, n, a, lda, ainv, lda, work, lda,
304 $ rwork, rcondc, result( 2 ) )
310 IF( result( k ).GE.thresh )
THEN
311 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
312 $ CALL
alahd( nout, path )
313 WRITE( nout, fmt = 9999 )
uplo, n, nb, imat, k,
333 CALL
clarhs( path, xtype,
uplo,
' ', n, n, kl, ku,
334 $ nrhs, a, lda, xact, lda, b, lda,
336 CALL clacpy(
'Full', n, nrhs, b, lda, x, lda )
340 $ lda, x, lda, info )
345 $ CALL
alaerh( path,
'CPOTRS', info, 0,
uplo, n,
346 $ n, -1, -1, nrhs, imat, nfail,
349 CALL clacpy(
'Full', n, nrhs, b, lda, work, lda )
350 CALL
cpot02(
uplo, n, nrhs, a, lda, x, lda, work,
351 $ lda, rwork, result( 3 ) )
356 CALL
cget04( n, nrhs, x, lda, xact, lda, rcondc,
363 CALL
cporfs(
uplo, n, nrhs, a, lda, afac, lda, b,
364 $ lda, x, lda, rwork, rwork( nrhs+1 ),
365 $ work, rwork( 2*nrhs+1 ), info )
370 $ CALL
alaerh( path,
'CPORFS', info, 0,
uplo, n,
371 $ n, -1, -1, nrhs, imat, nfail,
374 CALL
cget04( n, nrhs, x, lda, xact, lda, rcondc,
376 CALL
cpot05(
uplo, n, nrhs, a, lda, b, lda, x, lda,
377 $ xact, lda, rwork, rwork( nrhs+1 ),
384 IF( result( k ).GE.thresh )
THEN
385 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
386 $ CALL
alahd( nout, path )
387 WRITE( nout, fmt = 9998 )
uplo, n, nrhs,
388 $ imat, k, result( k )
400 CALL
cpocon(
uplo, n, afac, lda, anorm, rcond, work,
406 $ CALL
alaerh( path,
'CPOCON', info, 0,
uplo, n, n,
407 $ -1, -1, -1, imat, nfail, nerrs, nout )
409 result( 8 ) =
sget06( rcond, rcondc )
413 IF( result( 8 ).GE.thresh )
THEN
414 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
415 $ CALL
alahd( nout, path )
416 WRITE( nout, fmt = 9997 )
uplo, n, imat, 8,
428 CALL
alasum( path, nout, nfail, nrun, nerrs )
430 9999
format(
' UPLO = ''', a1,
''', N =', i5,
', NB =', i4,
', type ',
431 $ i2,
', test ', i2,
', ratio =', g12.5 )
432 9998
format(
' UPLO = ''', a1,
''', N =', i5,
', NRHS=', i3,
', type ',
433 $ i2,
', test(', i2,
') =', g12.5 )
434 9997
format(
' UPLO = ''', a1,
''', N =', i5,
',', 10x,
' type ', i2,
435 $
', test(', i2,
') =', g12.5 )