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 , SUBTESTS, UPLO
14 INTEGER INFO, IPOSTPAD, IPREPAD, LDA, LIWORK, LWORK,
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_, LLD_
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,
223 $ QTQNRM, RTOVFL, RTUNFL, TEMP1, TSTNRM, ULP,
224 $ ULPINV, UNFL, VL, VU
227 INTEGER ISEEDIN( 4 ) ),
229 DOUBLE PRECISION CTIME( 10 ), WTIME( 10 )
235EXTERNAL DLARAN, LSAME, NUMROC,
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
289 $ sizemqrright, sizeqrf, sizetms, sizeqtq,
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 ) )
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 )
324 iseedin( 3 ) = iseed( 3 )
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( a( i-1, i-1 )*a( i,
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 IF( thresh.LE.zero )
THEN
576 ELSE IF( res.NE.0 )
THEN
582 IF( thresh.GT.zero .AND. lsame( subtests,
'Y' ) )
THEN
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 )
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 )
647 $ iseed, win( 1+iprepad ), maxsize
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,
661 maxtstnrm =
max( tstnrm, maxtstnrm )
662 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
663 passed =
'FAILED stest 3'
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
'
941 CALL PDLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
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
'
975 CALL PDLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
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.EQ.
IF( INFO1 ) 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 IF( info.EQ.1 )
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
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' )