1 SUBROUTINE pdseptst( DESCA, UPLO, N, MATTYPE, SUBTESTS, THRESH,
2 $ ORDER, ABSTOL, ISEED, A, COPYA, Z, LDA, WIN,
3 $ WNEW, IFAIL, ICLUSTR, GAP, IPREPAD, IPOSTPAD,
4 $ WORK, LWORK, IWORK, LIWORK, HETERO, NOUT,
13 CHARACTER HETERO, SUBTESTS, UPLO
14 INTEGER INFO, IPOSTPAD, IPREPAD, LDA, LIWORK, LWORK,
15 $ MATTYPE, N, NOUT, ORDER
16 DOUBLE PRECISION ABSTOL, THRESH
19 INTEGER DESCA( * ), ICLUSTR( * ), IFAIL( * ),
20 $ iseed( 4 ), iwork( * )
21 DOUBLE PRECISION A( LDA, * ), COPYA( LDA, * ), GAP( * ),
22 $ WIN( * ), WNEW( * ), WORK( * ), Z( LDA, * )
196 INTEGER BLOCK_CYCLIC_2D, DLEN_, DT_, CTXT_, M_, N_,
197 $ MB_, NB_, RSRC_, CSRC_,
198 PARAMETER ( BLOCK_CYCLIC_2D = 1, dlen_ = 9, dt_ = 1,
199 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
200 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
201 DOUBLE PRECISION HALF, ONE, TEN, ZERO
202 parameter( zero = 0.0d+0, one = 1.0d+0,
203 $ ten = 10.0d+0, half = 0.5d+0 )
204 DOUBLE PRECISION PADVAL
205 parameter( padval = 19.25d+0 )
207 PARAMETER ( MAXTYP = 22 )
212 CHARACTER JOBZ, RANGE
214 INTEGER CONTEXT, I, IAM, IHETERO, IINFO, IL, IMODE, IN,
215 $ indd, indwork, isizesubtst, isizesyevx,
216 $ isizetst, itype, iu, j, llwork, lsyevxsize,
217 $ maxsize, minsize, mycol, myrow, nb, ngen, nloc,
218 $ nnodes, np, npcol, nprow, nq, res, sizechk,
219 $ sizemqrleft, sizemqrright, sizeqrf, sizeqtq,
220 $ sizesubtst, sizesyev, sizesyevx, sizetms,
221 $ sizetst, valsize, vecsize, isizesyevd,sizesyevd
222 DOUBLE PRECISION ANINV, ANORM, COND, MAXQTQNRM, MAXTSTNRM, OVFL,
227 INTEGER ISEEDIN( 4 ), KMAGN( MAXTYP ), KMODE( MAXTYP ),
229 DOUBLE PRECISION CTIME( 10 ), WTIME( 10 )
234 DOUBLE PRECISION DLARAN, PDLAMCH
235 EXTERNAL DLARAN, LSAME, NUMROC, PDLAMCH
245 INTRINSIC abs, dble, int,
max,
min, sqrt
248 DATA ktype / 1, 2, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 8,
249 $ 8, 8, 9, 9, 9, 9, 9, 10, 11 /
250 DATA kmagn / 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 1,
251 $ 2, 3, 1, 1, 1, 2, 3, 1, 1 /
252 DATA kmode / 0, 0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
253 $ 0, 0, 4, 3, 1, 4, 4, 3, 0 /
257 IF( block_cyclic_2d*csrc_*ctxt_*dlen_*dt_*lld_*mb_*m_*nb_*n_*
261 passed =
'PASSED EVX'
262 context = desca( ctxt_ )
265 CALL blacs_pinfo( iam, nnodes )
271 IF( lsame( hetero,
'Y' ) )
THEN
276 CALL igebs2d( context,
'All',
' ', 1, 1, ihetero, 1 )
278 CALL igebr2d( context,
'All',
' ', 1, 1, ihetero, 1, 0, 0 )
280 IF( ihetero.EQ.2 )
THEN
288 CALL pdlasizesqp( desca, iprepad, ipostpad, sizemqrleft,
289 $ sizemqrright, sizeqrf
290 $ sizechk, sizesyevx, isizesyevx, sizesyev,
291 $ sizesyevd, isizesyevd, sizesubtst,
292 $ isizesubtst, sizetst, isizetst )
294 IF( lwork.LT.sizetst )
THEN
298 CALL igamx2d( context,
'a',
' ', 1, 1, info, 1, 1, 1, -1, -1, 0 )
304 llwork = lwork - indwork + 1
306 ulp = pdlamch( context,
'P' )
308 unfl = pdlamch( context,
'Safe min' )
311 rtunfl = sqrt( unfl )
312 rtovfl = sqrt( ovfl )
313 aninv = one / dble(
max( 1, n ) )
317 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
THEN
318 CALL igebs2d( context,
'a',
' ', 4, 1, iseed, 4 )
320 CALL igebr2d( context,
'a',
' ', 4, 1, iseed, 4, 0, 0 )
322 iseedin( 1 ) = iseed( 1 )
323 iseedin( 2 ) = iseed( 2 )
325 iseedin( 4 ) = iseed( 4 )
344 itype = ktype( mattype )
345 imode = kmode( mattype )
349 GO TO ( 10, 20, 30 )kmagn( mattype )
356 anorm = ( rtovfl*ulp )*aninv
360 anorm = rtunfl*n*ulpinv
364 IF( mattype.LE.15 )
THEN
367 cond = ulpinv*aninv / ten
375 IF( itype.EQ.1 )
THEN
380 work( indd+i-1 ) = zero
382 CALL pdlaset(
'All', n, n, zero, zero, copya, 1, 1, desca )
385 ELSE IF( itype.EQ.2 )
THEN
390 work( indd+i-1 ) = one
392 CALL pdlaset(
'All', n, n, zero, one, copya, 1, 1, desca )
395 ELSE IF( itype.EQ.4 )
THEN
399 CALL pdfillpad( desca( ctxt_ ), sizetms, 1, work( indwork ),
400 $ sizetms, iprepad, ipostpad, padval+1.0d+0 )
402 CALL pdlatms( n, n,
'S', iseed,
'S', work( indd ), imode,
403 $ cond, anorm, 0, 0,
'N', copya, 1, 1, desca,
404 $ order, work( indwork+iprepad ), sizetms,
408 CALL pdchekpad( desca( ctxt_ ),
'PDLATMS1-WORK', sizetms, 1,
409 $ work( indwork ), sizetms, iprepad, ipostpad,
412 ELSE IF( itype.EQ.5 )
THEN
416 CALL pdfillpad( desca( ctxt_ ), sizetms, 1, work( indwork ),
417 $ sizetms, iprepad, ipostpad, padval+2.0d+0 )
419 CALL pdlatms( n, n,
'S', iseed,
'S', work( indd ), imode,
420 $ cond, anorm, n, n,
'N', copya, 1, 1, desca,
421 $ order, work( indwork+iprepad ), sizetms,
424 CALL pdchekpad( desca( ctxt_ ),
'PDLATMS2-WORK', sizetms, 1,
425 $ work( indwork ), sizetms, iprepad, ipostpad,
430 ELSE IF( itype.EQ.8 )
THEN
434 np = numroc( n, desca( mb_ ), myrow, 0, nprow )
435 nq = numroc( n, desca( nb_ ), mycol, 0, npcol )
436 CALL pdmatgen( desca( ctxt_ ),
'S',
'N', n, n, desca( mb_ ),
437 $ desca( nb_ ), copya, desca( lld_ ),
438 $ desca( rsrc_ ), desca( csrc_ ), iseed( 1 ),
439 $ 0, np, 0, nq, myrow, mycol, nprow, npcol )
443 ELSE IF( itype.EQ.9 )
THEN
448 CALL pdfillpad( desca( ctxt_ ), sizetms, 1, work( indwork ),
449 $ sizetms, iprepad, ipostpad, padval+3.0d+0 )
451 CALL pdlatms( n, n,
'S', iseed,
'S', work( indd ), imode,
452 $ cond, anorm, n, n,
'N', copya, 1, 1, desca,
453 $ order, work( indwork+iprepad ), sizetms,
458 CALL pdchekpad( desca( ctxt_ ),
'PDLATMS3-WORK', sizetms, 1,
459 $ work( indwork ), sizetms, iprepad, ipostpad,
462 ELSE IF( itype.EQ.10 )
THEN
467 CALL pdlaset(
'All', n, n, zero, zero, copya, 1, 1, desca )
468 np = numroc( n, desca( mb_ ), 0, 0, nprow )
469 nq = numroc( n, desca( nb_ ), 0, 0, npcol )
475 in =
min( 1+int( dlaran( iseed )*dble( nloc ) ), n-ngen )
477 CALL dlatms( in, in,
'S', iseed,
'P', work( indd
478 $ imode, cond, anorm, 1, 1,
'N', a, lda,
479 $ work( indwork ), iinfo )
482 temp1 = abs( a( i-1, i ) ) /
483 $ sqrt( abs( a( i-1, i-1 )*a( i, i ) ) )
484 IF( temp1.GT.half )
THEN
485 a( i-1, i ) = half*sqrt( abs
487 a( i, i-1 ) = a( i-1, i )
490 CALL pdelset( copya, ngen+1, ngen+1, desca, a( 1, 1 ) )
492 CALL pdelset( copya, ngen+i, ngen+i, desca,
494 CALL pdelset( copya, ngen+i-1, ngen+i, desca,
496 CALL pdelset( copya, ngen+i, ngen+i-1, desca,
504 ELSE IF( itype.EQ.11 )
THEN
513 in =
min( j, n-ngen )
515 work( indd+ngen+i ) = temp1
524 CALL pdfillpad( desca( ctxt_ ), sizetms, 1, work( indwork ),
525 $ sizetms, iprepad, ipostpad, padval+4.0d+0 )
527 CALL pdlatms( n, n,
'S', iseed,
'S', work( indd ), imode,
528 $ cond, anorm, 0, 0,
'N', copya, 1, 1, desca,
529 $ order, work( indwork+iprepad ), sizetms,
532 CALL pdchekpad( desca( ctxt_ ),
'PDLATMS4-WORK', sizetms, 1,
533 $ work( indwork ), sizetms, iprepad, ipostpad,
545 $
CALL dlasrt(
'I', n, work( indd ), iinfo )
556 $ iseed, work( indd ), maxsize, vecsize,
559 lsyevxsize =
min( maxsize, llwork )
561 CALL pdsepsubtst( wknown,
'v', 'a
', UPLO, N, VL, VU, IL, IU,
562 $ THRESH, ABSTOL, A, COPYA, Z, 1, 1, DESCA,
563 $ WORK( INDD ), WIN, IFAIL, ICLUSTR, GAP,
564 $ IPREPAD, IPOSTPAD, WORK( INDWORK ), LLWORK,
565 $ LSYEVXSIZE, IWORK, ISIZESYEVX, RES, TSTNRM,
573.LE.
IF( THRESHZERO ) THEN
576.NE.
ELSE IF( RES0 ) THEN
582.GT..AND.
IF( THRESHZERO LSAME( SUBTESTS, 'y
' ) ) THEN
590 CALL PDLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
591 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
596 CALL PDSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
597 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
598 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
599 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
600 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
601 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
605 PASSED = 'failed
stest 1
'
606 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
607 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
617 CALL PDLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
618 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
621 LSYEVXSIZE = VECSIZE + INT( DLARAN( ISEED )*
622 $ DBLE( MAXSIZE-VECSIZE ) )
624 CALL PDSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
625 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
626 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
627 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
628 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
629 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
633 PASSED = 'failed
stest 2
'
634 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
635 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
646 CALL PDLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
647 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
652 CALL PDSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
653 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
654 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
655 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
656 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
657 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
661 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
662 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
663 PASSED = 'failed
stest 3
'
679 CALL PDLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
680 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
685 CALL PDSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
686 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
687 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
688 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
689 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
690 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
694 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
695 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
696 PASSED = 'failed
stest 4
'
712 CALL PDLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
713 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
718 CALL PDSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
719 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
720 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
721 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
722 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
723 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
727 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
728 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
729 PASSED = 'failed
stest 5
'
744 CALL PDLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
745 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
750 CALL PDSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
751 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
752 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
753 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
754 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
755 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
759 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
760 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
761 PASSED = 'failed
stest 6
'
776 CALL PDLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
777 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
779 LSYEVXSIZE = VECSIZE + INT( DLARAN( ISEED )*
780 $ DBLE( MAXSIZE-VECSIZE ) )
782 CALL PDSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
783 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
784 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
785 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
786 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
787 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
791 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
792 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
793 PASSED = 'failed
stest 7
'
808 CALL PDLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
809 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
814 CALL PDSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
815 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
816 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
817 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
818 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
819 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
823 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
824 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
825 PASSED = 'failed
stest 8
'
840 CALL PDLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
841 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
846 CALL PDSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
847 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
848 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
849 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
850 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
851 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
855 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
856 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
857 PASSED = 'failed
stest 9
'
873 CALL PDLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
874 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
879 CALL PDSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
880 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
881 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
882 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
883 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
884 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
888 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
889 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
890 PASSED = 'failed stest10
'
907 CALL PDLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
908 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
911 LSYEVXSIZE = VECSIZE + INT( DLARAN( ISEED )*
912 $ DBLE( MAXSIZE-VECSIZE ) )
914 CALL PDSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
915 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
916 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
917 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
918 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
919 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
923 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
924 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
925 PASSED = 'failed stest11
'
942 $ iseed, win( 1+iprepad ), maxsize,
947 CALL pdsepsubtst( .true., jobz, range, uplo, n, vl, vu, il,
948 $ iu, thresh, abstol, a, copya, z, 1, 1,
949 $ desca, win( 1+iprepad ), wnew, ifail,
950 $ iclustr, gap, iprepad, ipostpad,
951 $ work( indwork ), llwork, lsyevxsize,
952 $ iwork, isizesyevx, res, tstnrm, qtqnrm,
956 maxtstnrm =
max( tstnrm, maxtstnrm )
957 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
958 passed =
'FAILED stest12'
976 $ iseed, win( 1+iprepad ), maxsize,
979 lsyevxsize = valsize + int( dlaran( iseed )*
980 $ dble( vecsize-valsize ) )
982 CALL pdsepsubtst( .true., jobz, range, uplo, n, vl, vu, il,
983 $ iu, thresh, abstol, a, copya, z, 1, 1,
984 $ desca, win( 1+iprepad ), wnew, ifail,
985 $ iclustr, gap, iprepad, ipostpad,
986 $ work( indwork ), llwork, lsyevxsize,
987 $ iwork, isizesyevx, res, tstnrm, qtqnrm,
991 maxtstnrm =
max( tstnrm, maxtstnrm )
992 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
993 passed =
'FAILED stest13'
1001 CALL igamx2d( context,
'All',
' ', 1, 1, info, 1, -1, -1, -1, -1,
1004 IF( info.EQ.1 )
THEN
1006 WRITE( nout, fmt = 9994 )
'C '
1007 WRITE( nout, fmt = 9993 )iseedin( 1 )
1008 WRITE( nout, fmt = 9992 )iseedin( 2 )
1009 WRITE( nout, fmt = 9991 )iseedin( 3 )
1010 WRITE( nout, fmt = 9990 )iseedin( 4 )
1011 IF( lsame( uplo,
'L' ) )
THEN
1012 WRITE( nout, fmt = 9994 )
' UPLO= ''L'' '
1014 WRITE( nout, fmt = 9994 )
' UPLO= ''U'' '
1016 IF( lsame( subtests,
'Y' ) )
THEN
1017 WRITE( nout, fmt = 9994 )
' SUBTESTS= ''Y'' '
1019 WRITE( nout, fmt = 9994 )
' SUBTESTS= ''N'' '
1021 WRITE( nout, fmt = 9989 )n
1022 WRITE( nout, fmt = 9988 )nprow
1023 WRITE( nout, fmt = 9987 )npcol
1024 WRITE( nout, fmt = 9986 )nb
1025 WRITE( nout, fmt = 9985 )mattype
1026 WRITE( nout, fmt = 9982 )abstol
1027 WRITE( nout, fmt = 9981 )thresh
1028 WRITE( nout, fmt = 9994 )
'C '
1032 CALL slcombine( context,
'All', '>
', 'w
', 6, 1, WTIME )
1033 CALL SLCOMBINE( CONTEXT, 'all
', '>
', 'c
', 6, 1, CTIME )
1035.EQ..OR..EQ.
IF( INFO0 INFO1 ) THEN
1036.GE.
IF( WTIME( 1 )0.0 ) THEN
1037 WRITE( NOUT, FMT = 9999 )N, NB, NPROW, NPCOL, MATTYPE,
1038 $ SUBTESTS, WTIME( 1 ), CTIME( 1 ), MAXTSTNRM,
1041 WRITE( NOUT, FMT = 9998 )N, NB, NPROW, NPCOL, MATTYPE,
1042 $ SUBTESTS, CTIME( 1 ), MAXTSTNRM, MAXQTQNRM, PASSED
1044.EQ.
ELSE IF( INFO2 ) THEN
1045.GE.
IF( WTIME( 1 )0.0 ) THEN
1046 WRITE( NOUT, FMT = 9997 )N, NB, NPROW, NPCOL, MATTYPE,
1047 $ SUBTESTS, WTIME( 1 ), CTIME( 1 )
1049 WRITE( NOUT, FMT = 9996 )N, NB, NPROW, NPCOL, MATTYPE,
1050 $ SUBTESTS, CTIME( 1 )
1052.EQ.
ELSE IF( INFO3 ) THEN
1053 WRITE( NOUT, FMT = 9995 )N, NB, NPROW, NPCOL, MATTYPE,
1061 IF( LSAME( HETERO, 'n.AND.
' ) LSAME( SUBTESTS, 'n
' ) ) THEN
1062 PASSED = 'passed ev
'
1067.NE.
IF( INFO0 ) THEN
1071 PASSED = 'skipped ev
'
1075 CALL PDSYEV( JOBZ, UPLO, N, A, 1, 1, DESCA,
1076 $ WORK( INDWORK ), Z, 1, 1, DESCA,
1077 $ WORK( INDWORK ), -1, INFO )
1078 MINSIZE = INT( WORK( INDWORK ) )
1080 CALL PDSQPSUBTST( WKNOWN, JOBZ, UPLO, N, THRESH, ABSTOL, A,
1081 $ COPYA, Z, 1, 1, DESCA, WIN, WNEW, IPREPAD,
1082 $ IPOSTPAD, WORK( INDWORK ), LLWORK,
1083 $ MINSIZE, RES, TSTNRM, QTQNRM, NOUT )
1086 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
1087 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
1088 PASSED = 'fail ev test1
'
1096.EQ.
IF( INFO0 ) THEN
1099 CALL PDSYEV( JOBZ, UPLO, N, A, 1, 1, DESCA,
1100 $ WORK( INDWORK ), Z, 1, 1, DESCA,
1101 $ WORK( INDWORK ), -1, INFO )
1102 MINSIZE = INT( WORK( INDWORK ) )
1104 CALL PDSQPSUBTST( WKNOWN, JOBZ, UPLO, N, THRESH, ABSTOL, A,
1105 $ COPYA, Z, 1, 1, DESCA, WIN, WNEW, IPREPAD,
1106 $ IPOSTPAD, WORK( INDWORK ), LLWORK,
1107 $ MINSIZE, RES, TSTNRM, QTQNRM, NOUT )
1110 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
1111 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
1112 PASSED = 'fail ev test2
'
1116.EQ.
IF( INFO1 ) THEN
1118 WRITE( NOUT, FMT = 9994 )'c
'
1119 WRITE( NOUT, FMT = 9993 )ISEEDIN( 1 )
1120 WRITE( NOUT, FMT = 9992 )ISEEDIN( 2 )
1121 WRITE( NOUT, FMT = 9991 )ISEEDIN( 3 )
1122 WRITE( NOUT, FMT = 9990 )ISEEDIN( 4 )
1123 IF( LSAME( UPLO, 'l
' ) ) THEN
1124 WRITE( NOUT, FMT = 9994 )' uplo=
''l
'' '
1126 WRITE( NOUT, FMT = 9994 )' uplo=
''u
'' '
1128 WRITE( NOUT, FMT = 9989 )N
1129 WRITE( NOUT, FMT = 9988 )NPROW
1130 WRITE( NOUT, FMT = 9987 )NPCOL
1131 WRITE( NOUT, FMT = 9986 )NB
1132 WRITE( NOUT, FMT = 9985 )MATTYPE
1133 WRITE( NOUT, FMT = 9982 )ABSTOL
1134 WRITE( NOUT, FMT = 9981 )THRESH
1135 WRITE( NOUT, FMT = 9994 )'c
'
1139 CALL SLCOMBINE( CONTEXT, 'all
', '>
', 'w
', 6, 1, WTIME )
1140 CALL SLCOMBINE( CONTEXT, 'all
', '>
', 'c
', 6, 1, CTIME )
1142.EQ..OR..EQ.
IF( INFO0 INFO1 ) THEN
1143.GE.
IF( WTIME( 1 )0.0 ) THEN
1144 WRITE( NOUT, FMT = 9999 )N, NB, NPROW, NPCOL, MATTYPE,
1145 $ SUBTESTS, WTIME( 1 ), CTIME( 1 ), MAXTSTNRM,
1148 WRITE( NOUT, FMT = 9998 )N, NB, NPROW, NPCOL, MATTYPE,
1149 $ SUBTESTS, CTIME( 1 ), MAXTSTNRM, MAXQTQNRM,
1152.EQ.
ELSE IF( INFO2 ) THEN
1153.GE.
IF( WTIME( 1 )0.0 ) THEN
1154 WRITE( NOUT, FMT = 9997 )N, NB, NPROW, NPCOL, MATTYPE,
1155 $ SUBTESTS, WTIME( 1 ), CTIME( 1 )
1157 WRITE( NOUT, FMT = 9996 )N, NB, NPROW, NPCOL, MATTYPE,
1158 $ SUBTESTS, CTIME( 1 )
1160.EQ.
ELSE IF( INFO3 ) THEN
1161 WRITE( NOUT, FMT = 9995 )N, NB, NPROW, NPCOL, MATTYPE,
1170 IF( LSAME( HETERO, 'n.AND.
' ) LSAME( SUBTESTS, 'n
' ) ) THEN
1171 PASSED = 'passed evd
'
1175.NE.
IF( INFO0 ) THEN
1179 PASSED = 'skipped evd
'
1182 NP = NUMROC( N, DESCA( MB_ ), 0, 0, NPROW )
1183 NQ = NUMROC( N, DESCA( NB_ ), 0, 0, NPCOL )
1184 MINSIZE = MAX( 1+6*N+2*NP*NQ,
1185 $ 3*N + MAX( NB*( NP+1 ), 3*NB ) ) + 2*N
1187 CALL PDSDPSUBTST( WKNOWN, UPLO, N, THRESH, ABSTOL, A,
1188 $ COPYA, Z, 1, 1, DESCA, WIN, WNEW, IPREPAD,
1189 $ IPOSTPAD, WORK( INDWORK ), LLWORK,
1190 $ MINSIZE, IWORK, ISIZESYEVD,
1191 $ RES, TSTNRM, QTQNRM, NOUT )
1194 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
1195 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
1196 PASSED = 'fail evd test1
'
1200.EQ.
IF( INFO1 ) THEN
1202 WRITE( NOUT, FMT = 9994 )'c
'
1203 WRITE( NOUT, FMT = 9993 )ISEEDIN( 1 )
1204 WRITE( NOUT, FMT = 9992 )ISEEDIN( 2 )
1205 WRITE( NOUT, FMT = 9991 )ISEEDIN( 3 )
1206 WRITE( NOUT, FMT = 9990 )ISEEDIN( 4 )
1207 IF( LSAME( UPLO, 'l
' ) ) THEN
1208 WRITE( NOUT, FMT = 9994 )' uplo=
''l
'' '
1210 WRITE( NOUT, FMT = 9994 )' uplo=
''u
'' '
1212 WRITE( NOUT, FMT = 9989 )N
1213 WRITE( NOUT, FMT = 9988 )NPROW
1214 WRITE( NOUT, FMT = 9987 )NPCOL
1215 WRITE( NOUT, FMT = 9986 )NB
1216 WRITE( NOUT, FMT = 9985 )MATTYPE
1217 WRITE( NOUT, FMT = 9982 )ABSTOL
1218 WRITE( NOUT, FMT = 9981 )THRESH
1219 WRITE( NOUT, FMT = 9994 )'c
'
1223 CALL SLCOMBINE( CONTEXT, 'all
', '>
', 'w
', 6, 1, WTIME )
1224 CALL SLCOMBINE( CONTEXT, 'all',
'>',
'C', 6, 1, ctime )
1226 IF( info.EQ.0 .OR. info.EQ.1 )
THEN
1227 IF( wtime( 1 ).GE.0.0 )
THEN
1228 WRITE( nout, fmt = 9999 )n, nb, nprow, npcol, mattype,
1229 $ subtests, wtime( 1 ), ctime( 1 ), tstnrm,
1232 WRITE( nout, fmt = 9998 )n, nb, nprow, npcol, mattype,
1233 $ subtests, ctime( 1 ), maxtstnrm, maxqtqnrm,
1236 ELSE IF( info.EQ.2 )
THEN
1237 IF( wtime( 1 ).GE.0.0 )
THEN
1238 WRITE( nout, fmt = 9997 )n, nb, nprow, npcol, mattype,
1239 $ subtests, wtime( 1 ), ctime( 1 )
1241 WRITE( nout, fmt = 9996 )n, nb, nprow, npcol, mattype,
1242 $ subtests, ctime( 1 )
1244 ELSE IF( info.EQ.3 )
THEN
1245 WRITE( nout, fmt = 9995 )n, nb, nprow, npcol, mattype,
1251 9999
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 1x,
1252 $ f8.2, 1x, f8.2, 1x, g9.2, 1x, g9.2, 1x, a14 )
1253 9998
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 1x, 8x,
1254 $ 1x, f8.2, 1x, g9.2, 1x, g9.2, a14 )
1255 9997
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 1x, f8.2,
1256 $ 1x, f8.2, 21x,
'Bypassed' )
1257 9996
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 1x, 8x,
1258 $ 1x, f8.2, 21x,
'Bypassed' )
1259 9995
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 32x,
1260 $
'Bad MEMORY parameters' )
1262 9993
FORMAT(
' ISEED( 1 ) =', i8 )
1263 9992
FORMAT(
' ISEED( 2 ) =', i8 )
1264 9991
FORMAT(
' ISEED( 3 ) =', i8 )
1265 9990
FORMAT(
' ISEED( 4 ) =', i8 )
1266 9989
FORMAT(
' N=', i8 )
1267 9988
FORMAT(
' NPROW=', i8 )
1268 9987
FORMAT(
' NPCOL=', i8 )
1269 9986
FORMAT(
' NB=', i8 )
1270 9985
FORMAT(
' MATTYPE=', i8 )
1271 9984
FORMAT(
' IBTYPE=', i8 )
1272 9983
FORMAT(
' SUBTESTS=', a1 )
1273 9982
FORMAT(
' ABSTOL=', d16.6 )
1274 9981
FORMAT(
' THRESH=', d16.6 )
1275 9980
FORMAT(
' Increase TOTMEM in PDSEPDRIVER' )