3 SUBROUTINE pcseptst( DESCA, UPLO, N, MATTYPE, SUBTESTS, THRESH,
4 $ ORDER, ABSTOL, ISEED, A, COPYA, Z, LDA, WIN,
5 $ WNEW, IFAIL, ICLUSTR, GAP, IPREPAD, IPOSTPAD,
6 $ WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK,
16 INTEGER INFO, IPOSTPAD, IPREPAD, LDA, LIWORK, LRWORK,
17 $ LWORK, MATTYPE, N, NOUT, ORDER
21 INTEGER ( * ), ICLUSTR( * ), IFAIL( * ),
22 $ iseed( 4 ), iwork( * )
23 REAL GAP( * ), ( * ), WIN( * ), ( * )
24 COMPLEX A( LDA, * ), COPYA( LDA, * ), WORK( * ),
205 INTEGER , DLEN_, DTYPE_, CTXT_, M_, N_,
206 $ MB_, NB_, RSRC_, CSRC_, LLD_
207 PARAMETER ( BLOCK_CYCLIC_2D = 1, dlen_ = 9, dtype_ = 1,
208 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
209 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
210 REAL ZERO, ONE, TEN, HALF
211 parameter( zero = 0.0e+0, one = 1.0e+0, ten = 10.0e+0,
214 parameter( padval = ( 19.25e+0, 1.1e+1 ) )
216 PARAMETER ( CZERO = ( 0.0e+0, 0.0e+0 ) )
218 parameter( cone = ( 1.0e+0, 0.0e+0 ) )
220 parameter( maxtyp = 22 )
225 CHARACTER JOBZ, RANGE
227 INTEGER CONTEXT, I, IAM, IINFO, IL, IMODE, IN, INDD,
228 $ indrwork, indwork, isizeheevd, isizeheevx,
229 $ isizesubtst, isizetst, itype, iu, j,
230 $ lheevdsize, lheevxsize, llrwork, llwork,
231 $ maxsize, mycol, myrow, nb, ngen, nloc, nnodes,
232 $ np, np0, npcol, nprow, nq, nq0, res, rsizechk,
233 $ rsizeheevd, rsizeheevx, rsizeqtq, rsizesubtst,
234 $ rsizetst, sizeheevd, sizeheevx, sizemqrleft,
235 $ sizemqrright, sizeqrf, sizesubtst, sizetms,
236 $ sizetst, valsize, vecsize
237 REAL ANINV, ANORM, COND, MAXQTQNRM, MAXTSTNRM, OVFL,
238 $ QTQNRM, RTOVFL, RTUNFL, TEMP1, TSTNRM, ULP,
239 $ ULPINV, UNFL, VL, VU
242 INTEGER ISEEDIN( 4 ), KMAGN( MAXTYP ), KMODE( MAXTYP ),
244 DOUBLE PRECISION CTIME( 10 ), WTIME( 10 )
250 EXTERNAL LSAME, NUMROC, PSLAMCH, SLARAN
260 INTRINSIC abs, int,
max,
min, real, sqrt
263 DATA ktype / 1, 2, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 8,
264 $ 8, 8, 9, 9, 9, 9, 9, 10, 11 /
265 DATA kmagn / 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 1,
266 $ 2, 3, 1, 1, 1, 2, 3, 1, 1 /
267 DATA kmode / 0, 0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
268 $ 0, 0, 4, 3, 1, 4, 4, 3, 0 /
272 IF( block_cyclic_2d*csrc_*ctxt_*dlen_*dtype_*lld_*mb_*m_*nb_*n_*
276 passed =
'PASSED EEVX'
277 context = desca( ctxt_ )
280 CALL blacs_pinfo( iam, nnodes )
287 CALL pclasizesep( desca, iprepad, ipostpad, sizemqrleft,
288 $ sizemqrright, sizeqrf, sizetms, rsizeqtq,
289 $ rsizechk, sizeheevx, rsizeheevx, isizeheevx,
290 $ sizeheevd, rsizeheevd, isizeheevd, sizesubtst,
291 $ rsizesubtst, isizesubtst, sizetst, rsizetst,
294 IF( lrwork.LT.rsizetst )
THEN
298 CALL igamx2d( context,
'a',
' ', 1, 1, info, 1, 1, 1, -1, -1, 0 )
305 llwork = lwork - indwork + 1
306 llrwork = lrwork - indrwork + 1
308 ulp = pslamch( context,
'P' )
310 unfl = pslamch( context,
'Safe min' )
313 rtunfl = sqrt( unfl )
314 rtovfl = sqrt( ovfl )
315 aninv = one / real(
max( 1, n ) )
319 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
THEN
320 CALL igebs2d( context,
'a',
' ', 4, 1, iseed, 4 )
322 CALL igebr2d( context,
'a',
' ', 4, 1, iseed, 4, 0, 0 )
324 iseedin( 1 ) = iseed( 1 )
325 iseedin( 2 ) = iseed( 2 )
326 iseedin( 3 ) = iseed( 3 )
327 iseedin( 4 ) = iseed( 4 )
346 itype = ktype( mattype )
347 imode = kmode( mattype )
351 GO TO ( 10, 20, 30 )kmagn( mattype )
358 anorm = ( rtovfl*ulp )*aninv
362 anorm = rtunfl*n*ulpinv
366 IF( mattype.LE.15 )
THEN
369 cond = ulpinv*aninv / ten
377 IF( itype.EQ.1 )
THEN
382 rwork( indd+i-1 ) = zero
384 CALL pclaset(
'All', n, n, czero, czero, copya, 1, 1,
388 ELSE IF( itype.EQ.2 )
THEN
393 rwork( indd+i-1 ) = one
395 CALL pclaset(
'All', n, n, czero, cone, copya, 1, 1, desca )
398 ELSE IF( itype.EQ.4 )
THEN
402 CALL pcfillpad( desca( ctxt_ ), sizetms, 1, work( indwork ),
403 $ sizetms, iprepad, ipostpad, padval+1.0e+0 )
405 CALL pclatms( n, n,
'S', iseed,
'S', rwork( indd ), imode,
406 $ cond, anorm, 0, 0,
'N', copya, 1, 1, desca,
407 $ order, work( indwork+iprepad ), sizetms,
411 CALL pcchekpad( desca( ctxt_ ),
'PCLATMS1-WORK', sizetms, 1,
412 $ work( indwork ), sizetms, iprepad, ipostpad,
415 ELSE IF( itype.EQ.5 )
THEN
419 CALL pcfillpad( desca( ctxt_ ), sizetms, 1, work( indwork ),
420 $ sizetms, iprepad, ipostpad, padval+2.0e+0 )
422 CALL pclatms( n, n,
'S', iseed,
'S', rwork( indd ), imode,
423 $ cond, anorm, n, n,
'N', copya, 1, 1, desca,
424 $ order, work( indwork+iprepad ), sizetms,
427 CALL pcchekpad( desca( ctxt_ ),
'PCLATMS2-WORK', sizetms, 1,
428 $ work( indwork ), sizetms, iprepad, ipostpad,
433 ELSE IF( itype.EQ.8 )
THEN
437 np = numroc( n, desca( mb_ ), myrow, 0, nprow )
438 nq = numroc( n, desca( nb_ ), mycol, 0, npcol )
439 CALL pcmatgen( desca( ctxt_ ),
'H',
'N', n, n, desca( mb_ ),
440 $ desca( nb_ ), copya, desca( lld_ ),
441 $ desca( rsrc_ ), desca( csrc_ ), iseed( 1 ),
442 $ 0, np, 0, nq, myrow, mycol, nprow, npcol )
446 ELSE IF( itype.EQ.9 )
THEN
451 CALL pcfillpad( desca( ctxt_ ), sizetms, 1, work( indwork ),
452 $ sizetms, iprepad, ipostpad, padval+3.0e+0 )
454 CALL pclatms( n, n,
'S', iseed,
'S', rwork( indd ), imode,
455 $ cond, anorm, n, n,
'N', copya, 1, 1, desca,
456 $ order, work( indwork+iprepad ), sizetms,
461 CALL pcchekpad( desca( ctxt_ ),
'PCLATMS3-WORK', sizetms
462 $ work( indwork ), sizetms, iprepad, ipostpad,
465 ELSE IF( itype.EQ.10 )
THEN
470 CALL pclaset(
'All', n, n, czero, czero, copya, 1, 1,
472 np = numroc( n, desca( mb_ ), 0, 0, nprow )
473 nq = numroc( n, desca( nb_ ), 0, 0, npcol
479 in =
min( 1+int( slaran( iseed )*real( nloc ) ), n-ngen )
481 CALL clatms( in, in,
'S', iseed,
'P', rwork( indd ),
482 $ imode, cond, anorm, 1, 1,
'N', a, lda,
483 $ work( indwork ), iinfo )
486 temp1 = abs( a( i-1, i ) ) /
487 $ sqrt( abs( a( i-1, i-1 )*a( i, i ) ) )
488 IF( temp1.GT.half )
THEN
489 a( i-1, i ) = half*sqrt( abs( a( i-1, i-1 )*a( i,
491 a( i, i-1 ) = a( i-1, i )
494 CALL pcelset( copya, ngen+1, ngen+1, desca, a( 1, 1 ) )
496 CALL pcelset( copya, ngen+i, ngen+i, desca,
498 CALL pcelset( copya, ngen+i-1, ngen+i, desca,
500 CALL pcelset( copya, ngen+i, ngen+i-1, desca,
508 ELSE IF( itype.EQ.11 )
THEN
517 in =
min( j, n-ngen )
519 rwork( indd+ngen+i ) = temp1
528 CALL pcfillpad( desca( ctxt_ ), sizetms, 1, work( indwork ),
529 $ sizetms, iprepad, ipostpad, padval+4.0e+0 )
531 CALL pclatms( n, n,
'S', iseed,
'S', rwork( indd ), imode,
532 $ cond, anorm, 0, 0,
'N', copya, 1, 1, desca,
533 $ order, work( indwork+iprepad ), sizetms,
536 CALL pcchekpad( desca( ctxt_ ),
'PCLATMS4-WORK', sizetms, 1,
537 $ work( indwork ), sizetms, iprepad, ipostpad,
549 $
CALL slasrt(
'I', n, rwork( indd ), iinfo )
560 $ iseed, rwork( indd ), maxsize, vecsize,
563 lheevxsize =
min( maxsize, llrwork )
565 CALL pcsepsubtst( wknown,
'v',
'a', uplo, n, vl, vu, il, iu,
566 $ thresh, abstol, a, copya, z, 1, 1, desca,
567 $ rwork( indd ), win, ifail, iclustr, gap,
568 $ iprepad, ipostpad, work( indwork ), llwork,
569 $ rwork( indrwork ), llrwork, lheevxsize,
570 $ iwork, isizeheevx, res, tstnrm, qtqnrm,
578 IF( thresh.LE.zero )
THEN
581 ELSE IF( res.NE.0 )
THEN
587 IF( thresh.GT.zero .AND. lsame( subtests,
'Y' ) )
THEN
596 $ iseed, win( 1+iprepad ), maxsize,
601 CALL pcsepsubtst( .true., jobz, range, uplo, n, vl, vu, il,
602 $ iu, thresh, abstol, a, copya, z, 1, 1,
603 $ desca, win( 1+iprepad ), wnew, ifail,
604 $ iclustr, gap, iprepad, ipostpad,
605 $ work( indwork ), llwork, rwork, lrwork,
606 $ lheevxsize, iwork, isizeheevx, res,
607 $ tstnrm, qtqnrm, nout )
610 passed =
'FAILED stest 1'
611 maxtstnrm =
max( tstnrm, maxtstnrm )
612 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
623 $ iseed, win( 1+iprepad ), maxsize,
626 lheevxsize = vecsize + int( slaran( iseed )*
627 $ real( maxsize-vecsize ) )
629 CALL pcsepsubtst( .true., jobz, range, uplo, n, vl, vu, il,
630 $ iu, thresh, abstol, a, copya, z, 1, 1,
631 $ desca, win( 1+iprepad ), wnew, ifail,
632 $ iclustr, gap, iprepad, ipostpad,
633 $ work( indwork ), llwork, rwork, lrwork,
634 $ lheevxsize, iwork, isizeheevx, res,
635 $ tstnrm, qtqnrm, nout )
638 passed =
'FAILED stest 2'
639 maxtstnrm =
max( tstnrm, maxtstnrm )
640 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
652 $ iseed, win( 1+iprepad ), maxsize,
656 CALL pcsepsubtst( .true., jobz, range, uplo, n, vl, vu, il,
657 $ iu, thresh, abstol, a, copya, z, 1, 1,
658 $ desca, win( 1+iprepad ), wnew, ifail,
659 $ iclustr, gap, iprepad, ipostpad,
660 $ work( indwork ), llwork, rwork, lrwork,
661 $ lheevxsize, iwork, isizeheevx, res,
662 $ tstnrm, qtqnrm, nout )
665 maxtstnrm =
max( tstnrm, maxtstnrm )
666 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
667 passed =
'FAILED stest 3'
684 $ iseed, win( 1+iprepad ), maxsize,
689 CALL pcsepsubtst( .true., jobz, range, uplo, n, vl, vu, il,
690 $ iu, thresh, abstol, a, copya, z, 1, 1,
691 $ desca, win( 1+iprepad ), wnew, ifail,
692 $ iclustr, gap, iprepad, ipostpad,
693 $ work( indwork ), llwork, rwork, lrwork,
694 $ lheevxsize, iwork, isizeheevx, res,
695 $ tstnrm, qtqnrm, nout )
698 maxtstnrm =
max( tstnrm, maxtstnrm )
699 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
700 passed = 'failed
stest 4
'
716 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
717 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
722 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
723 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
724 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
725 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
726 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
727 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
728 $ TSTNRM, QTQNRM, NOUT )
731 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
732 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
733 PASSED = 'failed
stest 5
'
748 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
749 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
754 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
755 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
756 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
757 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
758 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
759 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
760 $ TSTNRM, QTQNRM, NOUT )
763 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
764 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
765 PASSED = 'failed
stest 6
'
780 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
781 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
783 LHEEVXSIZE = VECSIZE + INT( SLARAN( ISEED )*
784 $ REAL( MAXSIZE-VECSIZE ) )
786 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
787 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
788 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
789 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
790 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
791 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
792 $ TSTNRM, QTQNRM, NOUT )
795 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
796 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
797 PASSED = 'failed
stest 7
'
812 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
813 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
818 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
819 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
820 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
821 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
822 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
823 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
824 $ TSTNRM, QTQNRM, NOUT )
827 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
828 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
829 PASSED = 'failed
stest 8
'
844 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
845 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
850 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
851 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
852 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
853 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
854 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
855 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
856 $ TSTNRM, QTQNRM, NOUT )
859 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
860 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
861 PASSED = 'failed
stest 9
'
877 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
878 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
883 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
884 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
885 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
886 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
887 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
888 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
889 $ TSTNRM, QTQNRM, NOUT )
892 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
893 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
894 PASSED = 'failed stest10
'
911 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
912 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
916 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
917 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
918 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
919 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
920 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
921 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
922 $ TSTNRM, QTQNRM, NOUT )
925 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
926 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
927 PASSED = 'failed stest11
'
943 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
944 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
949 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
950 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
951 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
952 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
953 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
954 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
955 $ TSTNRM, QTQNRM, NOUT )
958 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
959 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
960 PASSED = 'failed stest12
'
977 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
978 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
982 CALL PCSEPSUBTST( .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, RWORK, LRWORK,
987 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
988 $ TSTNRM, QTQNRM, NOUT )
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,
1060 PASSED = 'passed eevd
'
1064.EQ.
IF( INFO0 ) THEN
1066 NP0 = NUMROC( N, NB, 0, 0, NPROW )
1067 NQ0 = NUMROC( MAX( N, 1 ), NB, 0, 0, NPCOL )
1068 LHEEVDSIZE = 1 + 9*N + 3*NP0*NQ0
1069 ISIZEHEEVD = MAX( 1, 2+7*N+8*NPCOL )
1071 CALL PCSDPSUBTST( WKNOWN, UPLO, N, THRESH, ABSTOL, A, COPYA, Z,
1072 $ 1, 1, DESCA, WIN, WNEW, IPREPAD, IPOSTPAD,
1073 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
1074 $ LHEEVDSIZE, IWORK, ISIZEHEEVD, RES, TSTNRM,
1081 PASSED = 'failed eevd
'
1088 CALL IGAMX2D( CONTEXT, 'all
', ' ', 1, 1, INFO, 1, -1, -1, -1, -1,
1091.EQ.
IF( INFO1 ) THEN
1093 WRITE( NOUT, FMT = 9994 )'c
'
1094 WRITE( NOUT, FMT = 9993 )ISEEDIN( 1 )
1095 WRITE( NOUT, FMT = 9992 )ISEEDIN( 2 )
1096 WRITE( NOUT, FMT = 9991 )ISEEDIN( 3 )
1097 WRITE( NOUT, FMT = 9990 )ISEEDIN( 4 )
1098 IF( LSAME( UPLO, 'l
' ) ) THEN
1099 WRITE( NOUT, FMT = 9994 )' uplo=
''l
'' '
1101 WRITE( NOUT, FMT = 9994 )' uplo=
''u
'' '
1103 IF( LSAME( SUBTESTS, 'y
' ) ) THEN
1104 WRITE( NOUT, FMT = 9994 )' subtests=
''y
'' '
1106 WRITE( NOUT, FMT = 9994 )' subtests=
''n
'' '
1108 WRITE( NOUT, FMT = 9989 )N
1109 WRITE( NOUT, FMT = 9988 )NPROW
1110 WRITE( NOUT, FMT = 9987 )NPCOL
1111 WRITE( NOUT, FMT = 9986 )NB
1112 WRITE( NOUT, FMT = 9985 )MATTYPE
1113 WRITE( NOUT, FMT = 9982 )ABSTOL
1114 WRITE( NOUT, FMT = 9981 )THRESH
1115 WRITE( NOUT, FMT = 9994 )'c
'
1119 CALL SLCOMBINE( CONTEXT, 'all
', '>
', 'w
', 6, 1, WTIME )
1120 CALL SLCOMBINE( CONTEXT, 'all
', '>
', 'c
', 6, 1, CTIME )
1122.EQ..OR..EQ.
IF( INFO0 INFO1 ) THEN
1123.GE.
IF( WTIME( 1 )0.0 ) THEN
1124 WRITE( NOUT, FMT = 9999 )N, NB, NPROW, NPCOL, MATTYPE,
1125 $ SUBTESTS, WTIME( 1 ), CTIME( 1 ), MAXTSTNRM,
1128 WRITE( NOUT, FMT = 9998 )N, NB, NPROW, NPCOL, MATTYPE,
1129 $ SUBTESTS, CTIME( 1 ), MAXTSTNRM, MAXQTQNRM, PASSED
1131.EQ.
ELSE IF( INFO2 ) THEN
1132.GE.
IF( WTIME( 1 )0.0 ) THEN
1133 WRITE( NOUT, FMT = 9997 )N, NB, NPROW, NPCOL, MATTYPE,
1134 $ SUBTESTS, WTIME( 1 ), CTIME( 1 )
1136 WRITE( NOUT, FMT = 9996 )N, NB, NPROW, NPCOL, MATTYPE,
1137 $ SUBTESTS, CTIME( 1 )
1139.EQ.
ELSE IF( INFO3 ) THEN
1140 WRITE( NOUT, FMT = 9995 )N, NB, NPROW, NPCOL, MATTYPE,
1147 9999 FORMAT( 1X, I5, 1X, I3, 1X, I3, 1X, I3, 1X, I3, 3X, A1, 1X, F8.2,
1148 $ 1X, F8.2, 1X, G9.2, 1X, G9.2, 1X, A14 )
1149 9998 FORMAT( 1X, I5, 1X, I3, 1X, I3, 1X, I3, 1X, I3, 3X, A1, 1X, 8X,
1150 $ 1X, F8.2, 1X, G9.2, 1X, G9.2, A14 )
1151 9997 FORMAT( 1X, I5, 1X, I3, 1X, I3, 1X, I3, 1X, I3, 3X, A1, 1X, F8.2,
1152 $ 1X, F8.2, 21X, 'bypassed
' )
1153 9996 FORMAT( 1X, I5, 1X, I3, 1X, I3, 1X, I3, 1X, I3, 3X, A1, 1X, 8X,
1154 $ 1X, F8.2, 21X, 'bypassed
' )
1155 9995 FORMAT( 1X, I5, 1X, I3, 1X, I3, 1X, I3, 1X, I3, 3X, A1, 32X,
1156 $ 'bad memory parameters
' )
1158 9993 FORMAT( ' iseed( 1 ) =
', I8 )
1159 9992 FORMAT( ' iseed( 2 ) =
', I8 )
1160 9991 FORMAT( ' iseed( 3 ) =
', I8 )
1161 9990 FORMAT( ' iseed( 4 ) =
', I8 )
1162 9989 FORMAT( ' n=
', I8 )
1163 9988 FORMAT( ' nprow=
', I8 )
1164 9987 FORMAT( ' npcol=
', I8 )
1165 9986 FORMAT( ' nb=
', I8 )
1166 9985 FORMAT( ' mattype=
', I8 )
1167 9984 FORMAT( ' ibtype=
', I8 )
1168 9983 FORMAT( ' subtests=
', A1 )
1169 9982 FORMAT( ' abstol=
', D16.6 )
1170 9981 FORMAT( ' thresh=
', D16.6 )